/// <summary> /// Load settings /// </summary> /// <param name="settings">Default settings</param> /// <param name="connect">Connection Settings</param> public void Load(AppConfig.AppSettingsModel settings, Connection.BaseModel connect = null) { this.AppSettings = settings; if (this.Export == null) { this.Export = new Connectors.PgDump(settings); } else { this.Export.LoadAppSettings(settings); } if (this.Import == null) { this.Import = new Connectors.PgRestore(settings); } else { this.Import.LoadAppSettings(settings); } if (connect != null) { this.Connect = connect; } }
/// <summary> /// Load default settings /// </summary> /// <param name="settings"></param> public virtual void LoadAppSettings(AppConfig.AppSettingsModel settings) { if (settings != null) { this.AppSettings = settings; } if (this.AppSettings != null) { this.FilePath = this.AppSettings.Path.Export; this.Bin = this.AppSettings.Bin.Psql; } }
/// <summary> /// Read SQL Definitions /// </summary> /// <param name="settings">Default Settings</param> public void ReadSqlDefinitions(AppConfig.AppSettingsModel settings) { var connection = new Connection.BaseModel(this.Connection); var list = new List <TableModel>(); foreach (var item in this.Tables) { var copy = item; copy.ReadSqlDefinitions(settings, connection); list.Add(item); } this.Tables = list; }
/// <summary> /// Constructor /// </summary> /// <param name="settings">Default Paths</param> public PgCommon(AppConfig.AppSettingsModel settings) : this() { this.LoadAppSettings(settings); }
/// <summary> /// Read Table Information from server /// </summary> /// <param name="settings">Default Settings</param> /// <param name="connection">Connection String</param> public void ReadSqlDefinitions(AppConfig.AppSettingsModel settings, Connection.BaseModel connection) { var psql = new Connectors.Psql(settings) { Query = $"\\d+ {this.Schema}.{this.Name};" }; var result = psql.Run(connection, true); this.Sql = StringExtensions.IsEmpty(result.Ouput) ? result.Error : result.Ouput; // parse output var lines = this.Sql.Split(new string[] { Environment.NewLine }, StringSplitOptions.None); // index var isIndex = false; var index = new List <IndexModel>(); var indexRegexp = new Regex("Indexes:"); // referenced var isReferenced = false; var referenced = new List <ReferencedModel>(); var referencedRegexp = new Regex("Referenced by:"); // triggers var isTrigger = false; var trigger = new List <TriggerModel>(); var triggerRegexp = new Regex("Triggers:"); // options //var optionRegexp = new Regex("Options:"); var stopRegexp = new Regex(":"); foreach (var item in lines) { // indexes if (indexRegexp.IsMatch(item)) { isIndex = true; continue; } if (isIndex) { if (!stopRegexp.IsMatch(item) && !StringExtensions.IsEmpty(item)) { index.Add(new IndexModel(item)); continue; } else { isIndex = false; } } // referenced by if (referencedRegexp.IsMatch(item)) { isReferenced = true; continue; } if (isReferenced) { if (!stopRegexp.IsMatch(item) && !StringExtensions.IsEmpty(item)) { referenced.Add(new ReferencedModel(item)); continue; } else { isReferenced = false; } } // trigger if (triggerRegexp.IsMatch(item)) { isTrigger = true; continue; } if (isTrigger) { if (!stopRegexp.IsMatch(item) && !StringExtensions.IsEmpty(item)) { trigger.Add(new TriggerModel(item)); continue; } else { isTrigger = false; } } //// options //if (optionRegexp.IsMatch(item)) //{ // this.Options = item // .Replace("Options: ", string.Empty) // .Trim() // .Split(',') // .Select(p => p.Trim()); // continue; //} } this.Indexes = index; this.References = referenced; this.Triggers = trigger; }
/// <summary> /// Constructor /// </summary> /// <param name="name">Job Name</param> /// <param name="settings">Default settings</param> /// <param name="connect">Connection Settings</param> public JobModel(string name, AppConfig.AppSettingsModel settings, Connection.BaseModel connect) : this(settings, connect) { this.Name = name; }
/// <summary> /// Constructor /// </summary> /// <param name="settings">Default settings</param> /// <param name="connect">Connection Settings</param> public JobModel(AppConfig.AppSettingsModel settings, Connection.BaseModel connect) : this(settings) { this.Connect = connect; }
/// <summary> /// Constructor /// </summary> /// <param name="settings">Default settings</param> public JobModel(AppConfig.AppSettingsModel settings) { this.AppSettings = settings; this.Export = new Connectors.PgDump(settings); this.Import = new Connectors.PgRestore(settings); }
/// <summary> /// Constructor /// </summary> /// <param name="settings">Default Settings</param> public PostgreBaseModel(AppConfig.AppSettingsModel settings) : this() { this.LoadAppSettings(settings); }