mirror of https://github.com/AMT-Cheif/drift.git
Warn when using RETURNING for now
This commit is contained in:
parent
bdf7d22776
commit
ddbb3a2d67
|
@ -30,6 +30,17 @@ class _LintingVisitor extends RecursiveVisitor<void, void> {
|
|||
|
||||
_LintingVisitor(this.linter);
|
||||
|
||||
void _checkNoReturning(StatementReturningColumns stmt) {
|
||||
if (stmt.returning != null) {
|
||||
linter.lints.add(AnalysisError(
|
||||
type: AnalysisErrorType.other,
|
||||
message: 'RETURNING is not supported in this version of moor. '
|
||||
'Follow https://github.com/simolus3/moor/issues/1096 for updates.',
|
||||
relevantNode: stmt.returning,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void visitBinaryExpression(BinaryExpression e, void arg) {
|
||||
const numericOps = {
|
||||
|
@ -151,8 +162,15 @@ class _LintingVisitor extends RecursiveVisitor<void, void> {
|
|||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void visitDeleteStatement(DeleteStatement e, void arg) {
|
||||
_checkNoReturning(e);
|
||||
visitChildren(e, arg);
|
||||
}
|
||||
|
||||
@override
|
||||
void visitInsertStatement(InsertStatement e, void arg) {
|
||||
_checkNoReturning(e);
|
||||
final targeted = e.resolvedTargetColumns;
|
||||
if (targeted == null) return;
|
||||
|
||||
|
@ -221,4 +239,10 @@ class _LintingVisitor extends RecursiveVisitor<void, void> {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void visitUpdateStatement(UpdateStatement e, void arg) {
|
||||
_checkNoReturning(e);
|
||||
visitChildren(e, arg);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -58,4 +58,29 @@ void main() {
|
|||
final file = await state.analyze('package:a/main.moor');
|
||||
expect(file.errors.errors, isEmpty);
|
||||
});
|
||||
|
||||
test('warns when using RETURNING', () async {
|
||||
final state = TestState.withContent(
|
||||
const {
|
||||
'a|lib/main.moor': '''
|
||||
CREATE TABLE foo (id INTEGER NOT NULL);
|
||||
|
||||
query: DELETE FROM foo RETURNING *;
|
||||
''',
|
||||
},
|
||||
enableAnalyzer: false,
|
||||
options: const MoorOptions.defaults(
|
||||
sqliteAnalysisOptions: SqliteAnalysisOptions(
|
||||
version: SqliteVersion.v3_35,
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
final file = await state.analyze('package:a/main.moor');
|
||||
expect(file.errors.errors, hasLength(1));
|
||||
expect(
|
||||
file.errors.errors.single,
|
||||
isA<MoorError>().having((e) => e.message, 'message',
|
||||
contains('RETURNING is not supported in this version of moor')));
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue