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());
        }
Example #2
0
 public AddColumnAction(Column column)
 {
     Name     = column.DbName;
     DataType = PgSqlTypeManager.GetPostgresName(column.DotNetType);
 }