From ac52957848a6a3b36482d4fb5500624ebf39eaab Mon Sep 17 00:00:00 2001 From: Simon Binder Date: Sun, 11 Sep 2022 22:11:12 +0200 Subject: [PATCH] Prepare analysis for views --- .../lib/src/analysis/resolver/drift/view.dart | 21 ++++++++++++ .../lib/src/analysis/results/results.dart | 1 + drift_dev/lib/src/analysis/results/view.dart | 33 +++++++++++++++++++ 3 files changed, 55 insertions(+) create mode 100644 drift_dev/lib/src/analysis/resolver/drift/view.dart create mode 100644 drift_dev/lib/src/analysis/results/view.dart diff --git a/drift_dev/lib/src/analysis/resolver/drift/view.dart b/drift_dev/lib/src/analysis/resolver/drift/view.dart new file mode 100644 index 00000000..cd95ee0e --- /dev/null +++ b/drift_dev/lib/src/analysis/resolver/drift/view.dart @@ -0,0 +1,21 @@ +import 'package:sqlparser/sqlparser.dart'; + +import '../../driver/state.dart'; +import '../../results/results.dart'; +import '../intermediate_state.dart'; +import 'element_resolver.dart'; + +class DriftViewResolver extends DriftElementResolver { + DriftViewResolver(super.file, super.discovered, super.resolver, super.state); + + @override + Future resolve() async { + final stmt = discovered.createView; + final references = await resolveSqlReferences(stmt); + final engine = newEngineWithTables(references); + + final source = (file.discovery as DiscoveredDriftFile).originalSource; + final context = engine.analyzeNode(stmt, source); + reportLints(context); + } +} diff --git a/drift_dev/lib/src/analysis/results/results.dart b/drift_dev/lib/src/analysis/results/results.dart index ce89c103..e078bfa7 100644 --- a/drift_dev/lib/src/analysis/results/results.dart +++ b/drift_dev/lib/src/analysis/results/results.dart @@ -6,3 +6,4 @@ export 'result_sets.dart'; export 'table.dart'; export 'trigger.dart'; export 'types.dart'; +export 'view.dart'; diff --git a/drift_dev/lib/src/analysis/results/view.dart b/drift_dev/lib/src/analysis/results/view.dart new file mode 100644 index 00000000..a28519fe --- /dev/null +++ b/drift_dev/lib/src/analysis/results/view.dart @@ -0,0 +1,33 @@ +import 'package:drift_dev/src/analysis/results/dart.dart'; + +import 'package:drift_dev/src/analysis/results/column.dart'; + +import 'result_sets.dart'; + +class DriftView extends DriftElementWithResultSet { + @override + final List columns; + + final DriftViewSource source; + + @override + final AnnotatedDartCode? customParentClass; + + @override + String entityInfoName; + + @override + ExistingRowClass? existingRowClass; + + DriftView( + super.id, + super.declaration, { + required this.columns, + required this.source, + required this.customParentClass, + required this.entityInfoName, + required this.existingRowClass, + }); +} + +abstract class DriftViewSource {}