public static string GetInnerSqlDefinition(this TableDefinition tblDefinition) { var strBuilder = new StringBuilder(); tblDefinition.Columns().ToList().ForEach(c => { var typ = c.PgType ?? PgSqlTypeManager.GetPostgresName(c.DotNetType); var str = $"\"{c.GetNameForDb()}\" {typ}".Trim(); if (!String.IsNullOrWhiteSpace(c.DefaultValue)) { if (c.DefaultValue.ToLower() == "bigserial") { str = $"{str.TrimEnd(typ.ToCharArray())} BIGSERIAL"; } else { str = $"{str} DEFAULT {c.DefaultValue}".Trim(); } } if (c.MustBeUnique) { str = $"{str} UNIQUE".Trim(); } if (!c.CanBeNull || c.IsPrimaryKey) { str = $"{str} NOT NULL".Trim(); } strBuilder.AppendLine($" {str},"); }); if (tblDefinition.PrimaryKeys() != null) { var keys = String.Join(", ", tblDefinition.PrimaryKeys().Select(p => $"\"{p.GetNameForDb()}\"")); strBuilder.AppendLine($" PRIMARY KEY ({keys})"); } return(strBuilder.ToString()); }
public AddColumnAction(Column column) { Name = column.DbName; DataType = PgSqlTypeManager.GetPostgresName(column.DotNetType); }