Esempio n. 1
0
        /// <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;
        }
Esempio n. 2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SqliteColumnType"/> class.
        /// </summary>
        /// <param name="typeAffinity">The type affinity.</param>
        /// <param name="collation">The collation.</param>
        /// <exception cref="ArgumentException"><paramref name="collation"/> or <paramref name="typeAffinity"/> are invalid enum values. Alternatively if the <paramref name="collation"/> is not <see cref="SqliteTypeAffinity.Text"/>.</exception>
        public SqliteColumnType(SqliteTypeAffinity typeAffinity, SqliteCollation collation)
            : this(typeAffinity)
        {
            if (!typeAffinity.IsValid())
            {
                throw new ArgumentException($"The { nameof(SqliteTypeAffinity) } provided must be a valid enum.", nameof(typeAffinity));
            }
            if (!collation.IsValid())
            {
                throw new ArgumentException($"The { nameof(SqliteCollation) } provided must be a valid enum.", nameof(collation));
            }
            if (typeAffinity != SqliteTypeAffinity.Text)
            {
                throw new ArgumentException("The type affinity must be a text type when a collation has been provided.", nameof(typeAffinity));
            }

            Collation = collation != SqliteCollation.None
                ? Option <Identifier> .Some(collation.ToString().ToUpperInvariant())
                : Option <Identifier> .None;
        }