Exemple #1
0
        /// <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;
            }
        }
Exemple #2
0
        /// <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;
        }
Exemple #3
0
        /// <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;
        }
Exemple #4
0
 /// <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;
 }
Exemple #5
0
 /// <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;
 }