mirror of https://github.com/AMT-Cheif/drift.git
Fix syntax error in generated code for queries
This commit is contained in:
parent
2ec63749f8
commit
e3b6c56f08
|
@ -686,4 +686,10 @@ abstract class _$Database extends GeneratedDatabase {
|
|||
$TodoCategoryItemCountView(this);
|
||||
late final $TodoItemWithCategoryNameViewView customViewName =
|
||||
$TodoItemWithCategoryNameViewView(this);
|
||||
@override
|
||||
Iterable<TableInfo<Table, dynamic>> get allTables =>
|
||||
allSchemaEntities.whereType<TableInfo<Table, Object?>>();
|
||||
@override
|
||||
List<DatabaseSchemaEntity> get allSchemaEntities =>
|
||||
[todoItems, todoCategories, todoCategoryItemCount, customViewName];
|
||||
}
|
||||
|
|
|
@ -14,6 +14,11 @@ abstract class _$CustomTablesDb extends GeneratedDatabase {
|
|||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Iterable<TableInfo<Table, dynamic>> get allTables =>
|
||||
allSchemaEntities.whereType<TableInfo<Table, Object?>>();
|
||||
@override
|
||||
List<DatabaseSchemaEntity> get allSchemaEntities => [];
|
||||
@override
|
||||
DriftDatabaseOptions get options =>
|
||||
const DriftDatabaseOptions(storeDateTimeAsText: true);
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -85,12 +85,15 @@ class FileAnalyzer {
|
|||
} else if (element is DriftView) {
|
||||
final source = element.source;
|
||||
if (source is SqlViewSource) {
|
||||
final stmt = parsedFile.statements
|
||||
.whereType<CreateViewStatement>()
|
||||
.firstWhere(
|
||||
(e) => e.firstPosition == element.declaration.offset);
|
||||
source.parsedStatement = stmt;
|
||||
source.parsedStatement =
|
||||
parsedFile.findStatement(element.declaration);
|
||||
}
|
||||
} else if (element is DriftTrigger) {
|
||||
element.parsedStatement =
|
||||
parsedFile.findStatement(element.declaration);
|
||||
} else if (element is DriftIndex) {
|
||||
element.parsedStatement =
|
||||
parsedFile.findStatement(element.declaration);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -152,3 +155,11 @@ class _OptionsAndRequiredVariables {
|
|||
|
||||
_OptionsAndRequiredVariables(this.options, this.variables);
|
||||
}
|
||||
|
||||
extension on DriftFile {
|
||||
Node findStatement<Node extends AstNode>(DriftDeclaration declaration) {
|
||||
return statements
|
||||
.whereType<Node>()
|
||||
.firstWhere((e) => e.firstPosition == declaration.offset);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
import 'package:sqlparser/sqlparser.dart';
|
||||
|
||||
import 'element.dart';
|
||||
import 'table.dart';
|
||||
|
||||
|
@ -30,4 +32,10 @@ class DriftIndex extends DriftSchemaElement {
|
|||
|
||||
@override
|
||||
Iterable<DriftElement> get references => [if (table != null) table!];
|
||||
|
||||
/// The parsed `CREATE VIEW` statement from [createView].
|
||||
///
|
||||
/// This node is not serialized and only set in the late-state, local file
|
||||
/// analysis.
|
||||
CreateIndexStatement? parsedStatement;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import 'package:drift/drift.dart';
|
||||
import 'package:sqlparser/sqlparser.dart';
|
||||
|
||||
import 'element.dart';
|
||||
import 'query.dart';
|
||||
|
@ -32,4 +33,10 @@ class DriftTrigger extends DriftSchemaElement {
|
|||
|
||||
@override
|
||||
String get dbGetterName => DriftSchemaElement.dbFieldName(id.name);
|
||||
|
||||
/// The parsed `CREATE VIEW` statement from [createView].
|
||||
///
|
||||
/// This node is not serialized and only set in the late-state, local file
|
||||
/// analysis.
|
||||
CreateTriggerStatement? parsedStatement;
|
||||
}
|
||||
|
|
|
@ -80,24 +80,27 @@ class DatabaseWriter {
|
|||
returnType: tableClassName,
|
||||
code: '$tableClassName(this)',
|
||||
);
|
||||
} /* else if (entity is DriftTrigger) {
|
||||
} else if (entity is DriftTrigger) {
|
||||
final sql = scope.sqlCode(entity.parsedStatement!);
|
||||
|
||||
writeMemoizedGetter(
|
||||
buffer: dbScope.leaf().buffer,
|
||||
getterName: entity.dbGetterName,
|
||||
returnType: 'Trigger',
|
||||
code: 'Trigger(${asDartLiteral(entity.createSql(scope.options))}, '
|
||||
'${asDartLiteral(entity.displayName)})',
|
||||
code: 'Trigger(${asDartLiteral(sql)}, '
|
||||
'${asDartLiteral(entity.schemaName)})',
|
||||
);
|
||||
} else if (entity is DriftIndex) {
|
||||
final sql = scope.sqlCode(entity.parsedStatement!);
|
||||
|
||||
writeMemoizedGetter(
|
||||
buffer: dbScope.leaf().buffer,
|
||||
getterName: entity.dbGetterName,
|
||||
returnType: 'Index',
|
||||
code: 'Index(${asDartLiteral(entity.displayName)}, '
|
||||
'${asDartLiteral(entity.createSql(scope.options))})',
|
||||
code: 'Index(${asDartLiteral(entity.schemaName)}, '
|
||||
'${asDartLiteral(sql)})',
|
||||
);
|
||||
} */
|
||||
else if (entity is DriftView) {
|
||||
} else if (entity is DriftView) {
|
||||
writeMemoizedGetter(
|
||||
buffer: dbScope.leaf().buffer,
|
||||
getterName: entity.dbGetterName,
|
||||
|
@ -130,7 +133,7 @@ class DatabaseWriter {
|
|||
|
||||
// Write List of tables
|
||||
final schemaScope = dbScope.leaf();
|
||||
/*
|
||||
|
||||
schemaScope
|
||||
..write(
|
||||
'@override\nIterable<TableInfo<Table, dynamic>> get allTables => ')
|
||||
|
@ -139,17 +142,16 @@ class DatabaseWriter {
|
|||
..write('=> [');
|
||||
|
||||
schemaScope
|
||||
..write(db.entities.map((e) {
|
||||
if (e is SpecialQuery) {
|
||||
final sql = e.formattedSql(scope.options);
|
||||
return 'OnCreateQuery(${asDartLiteral(sql)})';
|
||||
}
|
||||
..write(db.references.map((e) {
|
||||
// if (e is SpecialQuery) {
|
||||
// final sql = e.formattedSql(scope.options);
|
||||
// return 'OnCreateQuery(${asDartLiteral(sql)})';
|
||||
// }
|
||||
|
||||
return entityGetters[e];
|
||||
}).join(', '))
|
||||
// close list literal and allSchemaEntities getter
|
||||
..write('];\n');
|
||||
*/
|
||||
|
||||
final updateRules = FindStreamUpdateRules(db).identifyRules();
|
||||
if (updateRules.rules.isNotEmpty) {
|
||||
|
|
|
@ -156,7 +156,8 @@ class QueryWriter {
|
|||
|
||||
final dartLiteral = asDartLiteral(specialName ?? column.name);
|
||||
final method = column.nullable ? 'readNullable' : 'read';
|
||||
final rawDartType = dartTypeNames[column.sqlType];
|
||||
final rawDartType =
|
||||
_emitter.dartCode(AnnotatedDartCode([dartTypeNames[column.sqlType]!]));
|
||||
var code = 'row.$method<$rawDartType>($dartLiteral)';
|
||||
|
||||
final converter = column.typeConverter;
|
||||
|
|
|
@ -163,6 +163,10 @@ abstract class _NodeOrWriter {
|
|||
|
||||
return buffer.toString();
|
||||
}
|
||||
|
||||
String sqlCode(sql.AstNode node) {
|
||||
return SqlWriter(writer.options, escapeForDart: false).writeSql(node);
|
||||
}
|
||||
}
|
||||
|
||||
abstract class _Node extends _NodeOrWriter {
|
||||
|
|
Loading…
Reference in New Issue