Prepare analysis for views

This commit is contained in:
Simon Binder 2022-09-11 22:11:12 +02:00
parent 5508a9f246
commit ac52957848
No known key found for this signature in database
GPG Key ID: 7891917E4147B8C0
3 changed files with 55 additions and 0 deletions

View File

@ -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<DiscoveredDriftView> {
DriftViewResolver(super.file, super.discovered, super.resolver, super.state);
@override
Future<DriftView> 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);
}
}

View File

@ -6,3 +6,4 @@ export 'result_sets.dart';
export 'table.dart'; export 'table.dart';
export 'trigger.dart'; export 'trigger.dart';
export 'types.dart'; export 'types.dart';
export 'view.dart';

View File

@ -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<DriftColumn> 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 {}