/// <summary> /// Initializes a new instance of the <see cref="Column"/> class. /// </summary> /// <param name="columnName">The column name.</param> /// <param name="typeDefinition">The type definition.</param> /// <param name="nullable">If set to <c>true</c> indicates the column is nullable.</param> /// <param name="autoIncrement">If set to <c>true</c> the column automatically increments.</param> /// <param name="collation">The column collation.</param> /// <param name="defaultValue">The default value.</param> /// <param name="computedDefinition">The computed definition.</param> /// <param name="computedColumnType">The computed column type.</param> /// <exception cref="ArgumentNullException"><paramref name="columnName"/> is <c>null</c>, empty or whitespace.</exception> /// <exception cref="ArgumentException"><paramref name="collation"/> or <paramref name="computedColumnType"/> are invalid enum values.</exception> public Column( string columnName, IEnumerable <Token <SqliteToken> > typeDefinition, bool nullable, bool autoIncrement, SqliteCollation collation, IEnumerable <Token <SqliteToken> > defaultValue, IEnumerable <Token <SqliteToken> > computedDefinition, SqliteGeneratedColumnType computedColumnType ) { if (columnName.IsNullOrWhiteSpace()) { throw new ArgumentNullException(nameof(columnName)); } if (!collation.IsValid()) { throw new ArgumentException($"The { nameof(SqliteCollation) } provided must be a valid enum.", nameof(collation)); } if (!computedColumnType.IsValid()) { throw new ArgumentException($"The { nameof(SqliteGeneratedColumnType) } provided must be a valid enum.", nameof(computedColumnType)); } Name = columnName; TypeDefinition = typeDefinition?.ToList() ?? Enumerable.Empty <Token <SqliteToken> >(); Nullable = nullable; IsAutoIncrement = autoIncrement; Collation = collation; DefaultValue = defaultValue?.ToList() ?? Enumerable.Empty <Token <SqliteToken> >(); ComputedDefinition = computedDefinition?.ToList() ?? Enumerable.Empty <Token <SqliteToken> >(); ComputedColumnType = computedColumnType; }
public GeneratedAlways(SqlExpression definition, SqliteGeneratedColumnType generatedColumnType) : base(ColumnConstraintType.GeneratedAlways) { if (definition == null || definition.Tokens.Empty()) { throw new ArgumentNullException(nameof(definition)); } Definition = definition.Tokens.ToList(); GeneratedColumnType = generatedColumnType; }