private void CreateTable(GenerateCommand command)
        {
            var tables     = _tableRepository.GetAll();
            var tableNames = command.AllTables ? tables.Select(t => t.Name).ToList() : TableHelper.ParseTableNames(command.TableNames);

            foreach (var tableName in tableNames)
            {
                var table   = tables.First(f => f.Name == tableName);
                var columns = _tableRepository.GetColumns(tableName);

                var builder          = new CreateTableChangeSetBuilder(table, columns);
                var changeSetCommand = new ChangeSetCommand(command.Author);
                var changeSet        = builder.Build(changeSetCommand);

                var xml  = changeSet.ToXml();
                var path = Path.Combine(command.DirectoryPath, $"{ChangeSetCommand.Sequence:000}.{tableName.ToLower()}.create.xml");
                FileHelper.Write(path, xml);

                ChangeSetCommand.Next();

                foreach (var column in columns.Where(w => w.AutoIncrement))
                {
                    CreateSequence(command, changeSetCommand, table, column);
                }

                var foreignKeys = _tableRepository.GetForeignKeys(tableName);

                foreach (var foreignKey in foreignKeys)
                {
                    AddForeignKeyConstraint(command, changeSetCommand, table, foreignKey);
                }
            }
        }
Ejemplo n.º 2
0
        public void Build()
        {
            var table = new Table
            {
                Name = "GA_TIMESHEET"
            };

            var columns = new List <Column>
            {
                new Column
                {
                    Name       = "ID",
                    PrimaryKey = true,
                    ForeignKey = false,
                    Nullable   = false,
                    Type       = ColumnType.Long,
                    Length     = null,
                    Precision  = 19,
                    Scale      = 0
                },
                new Column
                {
                    Name       = "TIMESHEET_ID",
                    PrimaryKey = false,
                    ForeignKey = true,
                    Nullable   = false,
                    Type       = ColumnType.Long,
                    Length     = null,
                    Precision  = 19,
                    Scale      = 0
                }
            };

            var builder = new CreateTableChangeSetBuilder(table, columns);
            var command = new ChangeSetCommand("altair.sossai");

            var changeSet = builder.Build(command);

            Console.WriteLine(changeSet.ToXml());
        }