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); } }
private string GetFunctionBody(string oid) { using (var dRead = GetReader(PostgresQueries.GetFuncBody(oid))) { dRead.Read(); return(dRead[FuncBodyColumn].ToString()); } }
private string GetPrimaryKeyField() { using (var dRead = GetReader(PostgresQueries.GetPrimaryKey($"{Table}_pkey"))) { dRead.Read(); return(dRead[ColumnName].ToString()); } }
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()); }
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)); }
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); }
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()); }
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)); } } } }
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); }
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); }
public static CcMigrationScript DropMasterTable(this CcMigrationScript script) { script._doc.AppendLine(PostgresQueries.DropTableByName(script._table.Schema, script._table.Name)); script._doc.AppendLine(); return(script); }