Пример #1
0
        public static Gene Load(GeneMemento memento, IImmutableDictionary <BigInteger, Gene> genesByHashCode)
        {
            switch (memento.Type)
            {
            case nameof(UseSchemaGene):
                return(UseSchemaGene.FromMemento(memento, genesByHashCode));

            case nameof(CreateTableGene):
                return(CreateTableGene.FromMemento(memento, genesByHashCode));

            case nameof(CreateColumnGene):
                return(CreateColumnGene.FromMemento(memento, genesByHashCode));

            case nameof(DropColumnGene):
                return(DropColumnGene.FromMemento(memento, genesByHashCode));

            case nameof(CreatePrimaryKeyGene):
                return(CreatePrimaryKeyGene.FromMemento(memento, genesByHashCode));

            case nameof(CreateUniqueIndexGene):
                return(CreateUniqueIndexGene.FromMemento(memento, genesByHashCode));

            case nameof(CreateIndexGene):
                return(CreateIndexGene.FromMemento(memento, genesByHashCode));

            case nameof(CreateForeignKeyGene):
                return(CreateForeignKeyGene.FromMemento(memento, genesByHashCode));

            case nameof(CustomSqlGene):
                return(CustomSqlGene.FromMemento(memento, genesByHashCode));

            default:
                throw new ArgumentException($"Unknown type {memento.Type}");
            }
        }
Пример #2
0
        public CustomSqlSpecification Execute(string up, string down = null)
        {
            var gene = new CustomSqlGene(_databaseName, up, down, Prerequisites);

            EvolutionHistoryBuilder.Append(gene);
            gene.AddToParent();
            return(new CustomSqlSpecification(gene, EvolutionHistoryBuilder));
        }
Пример #3
0
 internal CustomSqlSpecification(CustomSqlGene gene, EvolutionHistoryBuilder evolutionHistoryBuilder) :
     base(evolutionHistoryBuilder)
 {
     _gene = gene;
 }