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'),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
});
|
|
}
|