コード例 #1
0
        public override void GetCreationScript(StringBuilder source)
        {
            var primaryKeyFieldName = GetPrimaryKeyField();
            var columnBuilder       = new StringBuilder();

            using (var dRead = GetReader(PostgresQueries.GetAllTableColumns(Schema, Table)))
            {
                while (dRead.Read())
                {
                    var columName  = dRead[ColumnName].ToString();
                    var columnType = dRead[DataType].ToString().ToUpper();

                    if (string.Equals(columName, primaryKeyFieldName, StringComparison.InvariantCulture))
                    {
                        columnType = columnType == "INTEGER" ? "SERIAL" : "BIGSERIAL";
                    }
                    columnBuilder.AppendLine($"{columName} {columnType} {NullDefine(dRead[IsNull])},");
                }
                if (!string.IsNullOrEmpty(primaryKeyFieldName))
                {
                    columnBuilder.AppendLine(TablePrimaryKeyConstraint(primaryKeyFieldName));
                }

                CreateTableFromTemplate(source, columnBuilder);
            }
        }
コード例 #2
0
 private string GetFunctionBody(string oid)
 {
     using (var dRead = GetReader(PostgresQueries.GetFuncBody(oid)))
     {
         dRead.Read();
         return(dRead[FuncBodyColumn].ToString());
     }
 }
コード例 #3
0
 private string GetPrimaryKeyField()
 {
     using (var dRead = GetReader(PostgresQueries.GetPrimaryKey($"{Table}_pkey")))
     {
         dRead.Read();
         return(dRead[ColumnName].ToString());
     }
 }
コード例 #4
0
        private string[] GetTableColumns()
        {
            var columns = new List <string>();

            using (var dRead = GetReader(PostgresQueries.GetAllTableColumns(Schema, Table)))
            {
                while (dRead.Read())
                {
                    columns.Add(dRead[ColumnName].ToString());
                }
            }
            return(columns.ToArray());
        }
コード例 #5
0
        public override void GetCreationScript(StringBuilder source)
        {
            string oid;

            using (var dRead = GetReader(PostgresQueries.GetOidOfFunc($"process_{Table}_audit")))
            {
                dRead.Read();
                oid = dRead[OidColumn].ToString();
            }

            var function = GetFunctionBody(oid);

            source.AppendLine($"{function};");
            source.AppendLine(PostgresQueries.AlterFuncToOwner(Schema, $"process_{Table}_audit", _owner));
        }
コード例 #6
0
        public override void GetCreationScript(StringBuilder source)
        {
            var columns = GetTableColumns();
            var lines   = GetInsertionList(columns);

            foreach (var line in lines)
            {
                source.AppendLine(line);
            }

            source.AppendLine();
            var alterSequenceStr = PostgresQueries.AlterSequence(Schema, $"{Table}_id_seq", lines.Length + 1);

            source.AppendLine(alterSequenceStr);
        }
コード例 #7
0
        private string[] GetInsertionList(string[] columns)
        {
            var items = new List <string>();

            using (var dRead = GetReader(PostgresQueries.GetValuesByColumns(Schema, Table, columns)))
            {
                while (dRead.Read())
                {
                    var columnsValues = new List <string>();
                    for (int i = 0; i < dRead.FieldCount; i++)
                    {
                        var typeName = dRead[i].GetType().Name;
                        if (dRead[i].ToString() ==
                            "@model.JobStatusId == 0 || @model.JobStatusId == 1 || @model.JobStatusId == 5")
                        {
                        }
                        switch (typeName)
                        {
                        case "DBNull":
                            columnsValues.Add("NULL");
                            break;

                        case "String":
                            var value    = dRead[i].ToString();
                            var kovichka = value.IndexOf("'");
                            if (kovichka != -1)
                            {
                                value = value.Insert(kovichka, "'");
                            }
                            columnsValues.Add($"'{value}'");
                            break;

                        default:
                            columnsValues.Add(dRead[i].ToString());
                            break;
                        }
                    }

                    items.Add(PostgresQueries.InsertIntoLine(Schema, Table, columns, string.Join(", ", columnsValues)));
                }
            }

            return(items.ToArray());
        }
コード例 #8
0
        public override void GetCreationScript(StringBuilder source)
        {
            using (var dRead = GetReader(PostgresQueries.GetIndexForTable(Schema, Table)))
            {
                while (dRead.Read())
                {
                    var value = dRead[IdxNameColumn].ToString();
                    if (value.IndexOf("idx_", StringComparison.Ordinal) != -1)
                    {
                        var name  = value;
                        var regex = new Regex(@"\((.*)\)");

                        var match   = regex.Match($"{dRead[IdxQueryColumn]}");
                        var byField = match.Groups[1].ToString();
                        source.AppendLine(CreateIndexFromTemplate(name, byField));
                    }
                }
            }
        }
コード例 #9
0
 public static CcMigrationScript DropTrigger(this CcMigrationScript script)
 {
     script._doc.AppendLine(PostgresQueries.DropTrigger(script._table.Schema, script._table.Name, $"tr_history_{script._table.Name}"));
     script._doc.AppendLine();
     return(script);
 }
コード例 #10
0
 public static CcMigrationScript DropFunction(this CcMigrationScript script)
 {
     script._doc.AppendLine(PostgresQueries.DropFunction(script._table.Schema, script._table.Name, $"process_{script._table.Name}_audit"));
     script._doc.AppendLine();
     return(script);
 }
コード例 #11
0
 public static CcMigrationScript DropMasterTable(this CcMigrationScript script)
 {
     script._doc.AppendLine(PostgresQueries.DropTableByName(script._table.Schema, script._table.Name));
     script._doc.AppendLine();
     return(script);
 }