drift/sqlparser/test/parser/create_table_test.dart

86 lines
2.3 KiB
Dart
Raw Normal View History

2019-07-26 04:35:21 -07:00
import 'package:sqlparser/src/ast/ast.dart';
import 'utils.dart';
final statement = '''
CREATE TABLE IF NOT EXISTS users (
id INT NOT NULL PRIMARY KEY DESC ON CONFLICT ROLLBACK AUTOINCREMENT,
email VARCHAR NOT NULL UNIQUE ON CONFLICT ABORT,
score INT CONSTRAINT "score set" NOT NULL DEFAULT 420 CHECK (score > 0),
display_name VARCHAR COLLATE BINARY
REFERENCES some(thing) ON UPDATE CASCADE ON DELETE SET NULL
2019-07-26 04:35:21 -07:00
)
''';
void main() {
testStatement(
statement,
CreateTableStatement(
tableName: 'users',
ifNotExists: true,
withoutRowId: false,
columns: [
ColumnDefinition(
columnName: 'id',
typeName: 'INT',
constraints: [
NotNull(null),
PrimaryKey(
null,
autoIncrement: true,
onConflict: ConflictClause.rollback,
mode: OrderingMode.descending,
),
],
),
ColumnDefinition(
columnName: 'email',
typeName: 'VARCHAR',
constraints: [
NotNull(null),
Unique(null, ConflictClause.abort),
],
),
ColumnDefinition(
columnName: 'score',
typeName: 'INT',
constraints: [
NotNull('score set'),
Default(null, NumericLiteral(420, token(TokenType.numberLiteral))),
CheckColumn(
2019-07-26 04:35:21 -07:00
null,
BinaryExpression(
Reference(columnName: 'score'),
token(TokenType.more),
NumericLiteral(
0,
token(TokenType.numberLiteral),
),
),
),
],
),
ColumnDefinition(
columnName: 'display_name',
typeName: 'VARCHAR',
constraints: [
CollateConstraint(
null,
'BINARY',
),
ForeignKeyColumnConstraint(
null,
ForeignKeyClause(
foreignTable: TableReference('some', null),
columnNames: [Reference(columnName: 'thing')],
onUpdate: ReferenceAction.cascade,
onDelete: ReferenceAction.setNull,
),
),
2019-07-26 04:35:21 -07:00
],
)
],
),
);
}