mirror of https://github.com/AMT-Cheif/drift.git
76 lines
1.9 KiB
Dart
76 lines
1.9 KiB
Dart
|
import 'package:sqlparser/sqlparser.dart';
|
||
|
import 'package:test/test.dart';
|
||
|
|
||
|
import 'utils.dart';
|
||
|
|
||
|
void main() {
|
||
|
test('parses CREATE INDEX statements', () {
|
||
|
testStatement(
|
||
|
'CREATE INDEX foo ON bar (baz, inga) WHERE TRUE',
|
||
|
CreateIndexStatement(
|
||
|
indexName: 'foo',
|
||
|
on: TableReference('bar'),
|
||
|
columns: [
|
||
|
IndexedColumn(Reference(columnName: 'baz')),
|
||
|
IndexedColumn(Reference(columnName: 'inga')),
|
||
|
],
|
||
|
where: BooleanLiteral.withTrue(token(TokenType.$true)),
|
||
|
),
|
||
|
);
|
||
|
});
|
||
|
|
||
|
test('with unique and IF NOT EXISTS', () {
|
||
|
testStatement(
|
||
|
'CREATE UNIQUE INDEX IF NOT EXISTS foo ON bar (baz);',
|
||
|
CreateIndexStatement(
|
||
|
unique: true,
|
||
|
ifNotExists: true,
|
||
|
indexName: 'foo',
|
||
|
on: TableReference('bar'),
|
||
|
columns: [
|
||
|
IndexedColumn(Reference(columnName: 'baz')),
|
||
|
],
|
||
|
),
|
||
|
);
|
||
|
});
|
||
|
|
||
|
test('can have ordering modes on index expressions', () {
|
||
|
testStatement(
|
||
|
'CREATE INDEX foo ON bar (a + b DESC);',
|
||
|
CreateIndexStatement(
|
||
|
indexName: 'foo',
|
||
|
on: TableReference('bar'),
|
||
|
columns: [
|
||
|
IndexedColumn(
|
||
|
BinaryExpression(
|
||
|
Reference(columnName: 'a'),
|
||
|
token(TokenType.plus),
|
||
|
Reference(columnName: 'b'),
|
||
|
),
|
||
|
OrderingMode.descending,
|
||
|
),
|
||
|
],
|
||
|
),
|
||
|
);
|
||
|
});
|
||
|
|
||
|
test('can have collate expressions', () {
|
||
|
testStatement(
|
||
|
'CREATE INDEX foo ON bar (baz COLLATE RTRIM);',
|
||
|
CreateIndexStatement(
|
||
|
indexName: 'foo',
|
||
|
on: TableReference('bar'),
|
||
|
columns: [
|
||
|
IndexedColumn(
|
||
|
CollateExpression(
|
||
|
inner: Reference(columnName: 'baz'),
|
||
|
operator: token(TokenType.collate),
|
||
|
collateFunction: identifier('RTRIM'),
|
||
|
),
|
||
|
),
|
||
|
],
|
||
|
),
|
||
|
);
|
||
|
});
|
||
|
}
|