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()); }
private string AlterDomainHelper(string action) { var builder = new StringBuilder(); builder .Append($"ALTER DOMAIN {FieldName.AsSqlIndentifier()}") .AppendLine() .Append(action); return(builder.ToString()); }
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); }
protected override IEnumerable <Command> OnDrop(IMetadata sourceMetadata, IMetadata targetMetadata, IComparerContext context) { yield return(new Command() .Append($"DROP DOMAIN {FieldName.AsSqlIndentifier()}")); }