public static DataTypeReference CreateDataTypeReference(SqlDataType dataType)
        {
            if (dataType.IsMax)
            {
                return(Factory.DataType(dataType.Type, Factory.Max()));
            }

            if (dataType.Scale.HasValue)
            {
                return(Factory.DataType(dataType.Type, dataType.Size.Value, dataType.Scale.Value));
            }

            if (dataType.Size.HasValue)
            {
                return(Factory.DataType(dataType.Type, dataType.Size.Value));
            }

            return(Factory.DataType(dataType.Type));
        }
        public static List <ColumnDefinition> CreateColumnDefinitions(Table table, QuoteType quoteType = QuoteType.NotQuoted)
        {
            List <ColumnDefinition> columns = new List <ColumnDefinition>();

            foreach (var column in table.Columns)
            {
                //Debug.Print($"CURRENT COLUMN IS {column.Name} FROM TABLE {column.Parent.Name}");

                SqlDataType       sqlDataType = SqlDataType.Parse(column.DataType);
                DataTypeReference dataType    = CreateDataTypeReference(sqlDataType);
                if (column.IsIdentity)
                {
                    ColumnDefinition columnDef = Factory.IdentityColumn(column.Name, dataType, CreateIdentityOptions(column), quoteType);
                    columns.Add(columnDef);
                }
                else
                {
                    columns.Add(Factory.Column(column.Name, dataType, column.AllowNulls, quoteType));
                }
            }

            return(columns);
        }
 public void AddCreateDatabaseBatch(Database database, QuoteType quoteType = QuoteType.NotQuoted)
 {
     AddBatch(Factory.CreateDatabase(
                  Factory.Identifier(database.DatabaseName, quoteType)));
 }
 public void AddDropDatabaseIfExistsBatch(Database database, QuoteType quoteType = QuoteType.NotQuoted)
 {
     AddBatch(Factory.DropDatabase(true,
                                   Factory.Identifier(database.DatabaseName, quoteType)));
 }
 public void AddUseDatabaseBatch(Database database, QuoteType quoteType = QuoteType.NotQuoted)
 {
     AddBatch(Factory.Use(database.DatabaseName, quoteType));
 }
 public void AddCreateTableBatch(Table table, QuoteType quoteType = QuoteType.NotQuoted)
 {
     AddBatch(Factory.CreateTable(CreateSchemaObjectName(table, quoteType), Factory.TableDefinition(CreateColumnDefinitions(table, quoteType))));
 }
 public static IdentityOptions CreateIdentityOptions(Column column)
 {
     return(Factory.IdentityOptions(column.IdentityIncrement, column.IdentitySeed));
 }
 public static SchemaObjectName CreateSchemaObjectName(Table table, QuoteType quoteType = QuoteType.NotQuoted)
 {
     return(Factory.FullTableName(table.Parent.DatabaseName, table.Schema, table.Name, quoteType));
 }