105 lines
3.5 KiB
Dart
105 lines
3.5 KiB
Dart
|
/// Applies additional attributes to a database column.
|
||
|
class Column {
|
||
|
/// If `true`, a SQL field will be auto-incremented.
|
||
|
final bool autoIncrement;
|
||
|
|
||
|
/// If `true`, a SQL field will be nullable.
|
||
|
final bool nullable;
|
||
|
|
||
|
/// Specifies the length of a `VARCHAR`.
|
||
|
final int length;
|
||
|
|
||
|
/// Explicitly defines a SQL type for this column.
|
||
|
final ColumnType type;
|
||
|
|
||
|
/// Specifies what kind of index this column is, if any.
|
||
|
final IndexType index;
|
||
|
|
||
|
/// The default value of this field.
|
||
|
final defaultValue;
|
||
|
|
||
|
const Column(
|
||
|
{this.autoIncrement: false,
|
||
|
this.nullable: true,
|
||
|
this.length,
|
||
|
this.type,
|
||
|
this.index: IndexType.NONE,
|
||
|
this.defaultValue});
|
||
|
}
|
||
|
|
||
|
class PrimaryKey extends Column {
|
||
|
const PrimaryKey({bool autoIncrement: true})
|
||
|
: super(autoIncrement: autoIncrement, index: IndexType.PRIMARY_KEY);
|
||
|
}
|
||
|
|
||
|
const Column primaryKey = const PrimaryKey();
|
||
|
|
||
|
/// Maps to SQL index types.
|
||
|
enum IndexType {
|
||
|
NONE,
|
||
|
|
||
|
/// Standard index.
|
||
|
INDEX,
|
||
|
|
||
|
/// A primary key.
|
||
|
PRIMARY_KEY,
|
||
|
|
||
|
/// A *unique* index.
|
||
|
UNIQUE
|
||
|
}
|
||
|
|
||
|
/// Maps to SQL data types.
|
||
|
///
|
||
|
/// Features all types from this list: http://www.tutorialspoint.com/sql/sql-data-types.htm
|
||
|
class ColumnType {
|
||
|
/// The name of this data type.
|
||
|
final String name;
|
||
|
const ColumnType._(this.name);
|
||
|
|
||
|
// Numbers
|
||
|
static const ColumnType BIG_INT = const ColumnType._('bigint');
|
||
|
static const ColumnType INT = const ColumnType._('int');
|
||
|
static const ColumnType SMALL_INT = const ColumnType._('smallint');
|
||
|
static const ColumnType TINY_INT = const ColumnType._('tinyint');
|
||
|
static const ColumnType BIT = const ColumnType._('bit');
|
||
|
static const ColumnType DECIMAL = const ColumnType._('decimal');
|
||
|
static const ColumnType NUMERIC = const ColumnType._('numeric');
|
||
|
static const ColumnType MONEY = const ColumnType._('money');
|
||
|
static const ColumnType SMALL_MONEY = const ColumnType._('smallmoney');
|
||
|
static const ColumnType FLOAT = const ColumnType._('float');
|
||
|
static const ColumnType REAL = const ColumnType._('real');
|
||
|
|
||
|
// Dates and times
|
||
|
static const ColumnType DATE_TIME = const ColumnType._('datetime');
|
||
|
static const ColumnType SMALL_DATE_TIME = const ColumnType._('smalldatetime');
|
||
|
static const ColumnType DATE = const ColumnType._('date');
|
||
|
static const ColumnType TIME = const ColumnType._('time');
|
||
|
static const ColumnType TIME_STAMP = const ColumnType._('timestamp');
|
||
|
|
||
|
// Strings
|
||
|
static const ColumnType CHAR = const ColumnType._('char');
|
||
|
static const ColumnType VAR_CHAR = const ColumnType._('varchar');
|
||
|
static const ColumnType VAR_CHAR_MAX = const ColumnType._('varchar(max)');
|
||
|
static const ColumnType TEXT = const ColumnType._('text');
|
||
|
|
||
|
// Unicode strings
|
||
|
static const ColumnType NCHAR = const ColumnType._('nchar');
|
||
|
static const ColumnType NVAR_CHAR = const ColumnType._('nvarchar');
|
||
|
static const ColumnType NVAR_CHAR_MAX = const ColumnType._('nvarchar(max)');
|
||
|
static const ColumnType NTEXT = const ColumnType._('ntext');
|
||
|
|
||
|
// Binary
|
||
|
static const ColumnType BINARY = const ColumnType._('binary');
|
||
|
static const ColumnType VAR_BINARY = const ColumnType._('varbinary');
|
||
|
static const ColumnType VAR_BINARY_MAX = const ColumnType._('varbinary(max)');
|
||
|
static const ColumnType IMAGE = const ColumnType._('image');
|
||
|
|
||
|
// Misc.
|
||
|
static const ColumnType SQL_VARIANT = const ColumnType._('sql_variant');
|
||
|
static const ColumnType UNIQUE_IDENTIFIER =
|
||
|
const ColumnType._('uniqueidentifier');
|
||
|
static const ColumnType XML = const ColumnType._('xml');
|
||
|
static const ColumnType CURSOR = const ColumnType._('cursor');
|
||
|
static const ColumnType TABLE = const ColumnType._('table');
|
||
|
}
|