88 lines
2.7 KiB
C#
88 lines
2.7 KiB
C#
using System.Data;
|
|
using Umbraco.Core.Migrations.Expressions.Common;
|
|
using Umbraco.Core.Migrations.Expressions.Common.Expressions;
|
|
|
|
namespace Umbraco.Core.Migrations.Expressions.Create.ForeignKey
|
|
{
|
|
public class CreateForeignKeyBuilder : ExpressionBuilderBase<CreateForeignKeyExpression>,
|
|
ICreateForeignKeyFromTableBuilder,
|
|
ICreateForeignKeyForeignColumnBuilder,
|
|
ICreateForeignKeyToTableBuilder,
|
|
ICreateForeignKeyPrimaryColumnBuilder,
|
|
ICreateForeignKeyCascadeBuilder
|
|
{
|
|
public CreateForeignKeyBuilder(CreateForeignKeyExpression expression)
|
|
: base(expression)
|
|
{ }
|
|
|
|
/// <inheritdoc />
|
|
public void Do() => Expression.Execute();
|
|
|
|
/// <inheritdoc />
|
|
public ICreateForeignKeyForeignColumnBuilder FromTable(string table)
|
|
{
|
|
Expression.ForeignKey.ForeignTable = table;
|
|
return this;
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
public ICreateForeignKeyToTableBuilder ForeignColumn(string column)
|
|
{
|
|
Expression.ForeignKey.ForeignColumns.Add(column);
|
|
return this;
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
public ICreateForeignKeyToTableBuilder ForeignColumns(params string[] columns)
|
|
{
|
|
foreach (var column in columns)
|
|
Expression.ForeignKey.ForeignColumns.Add(column);
|
|
return this;
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
public ICreateForeignKeyPrimaryColumnBuilder ToTable(string table)
|
|
{
|
|
Expression.ForeignKey.PrimaryTable = table;
|
|
return this;
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
public ICreateForeignKeyCascadeBuilder PrimaryColumn(string column)
|
|
{
|
|
Expression.ForeignKey.PrimaryColumns.Add(column);
|
|
return this;
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
public ICreateForeignKeyCascadeBuilder PrimaryColumns(params string[] columns)
|
|
{
|
|
foreach (var column in columns)
|
|
Expression.ForeignKey.PrimaryColumns.Add(column);
|
|
return this;
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
public ICreateForeignKeyCascadeBuilder OnDelete(Rule rule)
|
|
{
|
|
Expression.ForeignKey.OnDelete = rule;
|
|
return this;
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
public ICreateForeignKeyCascadeBuilder OnUpdate(Rule rule)
|
|
{
|
|
Expression.ForeignKey.OnUpdate = rule;
|
|
return this;
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
public IExecutableBuilder OnDeleteOrUpdate(Rule rule)
|
|
{
|
|
Expression.ForeignKey.OnDelete = rule;
|
|
Expression.ForeignKey.OnUpdate = rule;
|
|
return new ExecutableBuilder(Expression);
|
|
}
|
|
}
|
|
}
|