Beispiel #1
0
        public string CreateDefinition(IMetadata sourceMetadata, IMetadata targetMetadata, IComparerContext context, bool onlyName = false, bool onlyDefinition = false)
        {
            var builder = new StringBuilder();

            if (!onlyDefinition)
            {
                builder.Append(FieldName.AsSqlIndentifier());
            }
            if (!onlyDefinition && !onlyName)
            {
                builder.Append(" ");
            }
            if (!onlyName)
            {
                var dataType = SqlHelper.GetDataType(this, sourceMetadata.MetadataCharacterSets.CharacterSetsById, sourceMetadata.MetadataDatabase.CharacterSet.CharacterSetId);
                if (Field.ComputedSource != null)
                {
                    builder.Append("COMPUTED BY ");
                    if (context.EmptyBodiesEnabled)
                    {
                        builder.Append($"({CreateShimFieldContent(dataType)})");
                    }
                    else
                    {
                        builder.Append(Field.ComputedSource);
                    }
                }
                else
                {
                    builder.Append(dataType);
                    if (IdentityType == IdentityTypeType.ByDefault)
                    {
                        builder.Append(" GENERATED BY DEFAULT AS IDENTITY");
                        if (Generator.InitialValue != 0)
                        {
                            builder.Append($" (START WITH {Generator.InitialValue})");
                        }
                    }
                    var defaultClause = SqlHelper.HandleDefault(this);
                    if (defaultClause != null)
                    {
                        builder.Append(" ");
                        builder.Append(defaultClause);
                    }
                    var notNullClause = SqlHelper.HandleNullable(this);
                    if (notNullClause != null)
                    {
                        builder.Append(" ");
                        builder.Append(notNullClause);
                    }
                    var collateClause = SqlHelper.HandleCollate(this, sourceMetadata.MetadataCollations.CollationsByKey);
                    if (collateClause != null)
                    {
                        builder.Append(" ");
                        builder.Append(collateClause);
                    }
                }
            }
            return(builder.ToString());
        }
Beispiel #2
0
    private string AlterDomainHelper(string action)
    {
        var builder = new StringBuilder();

        builder
        .Append($"ALTER DOMAIN {FieldName.AsSqlIndentifier()}")
        .AppendLine()
        .Append(action);
        return(builder.ToString());
    }
Beispiel #3
0
    protected override IEnumerable <Command> OnCreate(IMetadata sourceMetadata, IMetadata targetMetadata, IComparerContext context)
    {
        var command = new Command();

        command
        .Append($"CREATE DOMAIN {FieldName.AsSqlIndentifier()} AS")
        .AppendLine()
        .Append(SqlHelper.GetDataType(this, sourceMetadata.MetadataCharacterSets.CharacterSetsById, sourceMetadata.MetadataDatabase.Database.CharacterSet.CharacterSetId));
        var defaultClause = SqlHelper.HandleDefault(this);

        if (defaultClause != null)
        {
            command
            .AppendLine()
            .Append(DefaultSource);
        }
        var notNullClause = SqlHelper.HandleNullable(this);

        if (notNullClause != null)
        {
            command
            .AppendLine()
            .Append(notNullClause);
        }
        var validationClause = SqlHelper.HandleValidation(this);

        if (validationClause != null)
        {
            command
            .AppendLine()
            .Append(validationClause);
        }
        var collateClause = SqlHelper.HandleCollate(this, sourceMetadata.MetadataCollations.CollationsByKey);

        if (collateClause != null)
        {
            command
            .AppendLine()
            .Append(collateClause);
        }
        yield return(command);
    }
Beispiel #4
0
 protected override IEnumerable <Command> OnDrop(IMetadata sourceMetadata, IMetadata targetMetadata, IComparerContext context)
 {
     yield return(new Command()
                  .Append($"DROP DOMAIN {FieldName.AsSqlIndentifier()}"));
 }