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);
|
$TodoCategoryItemCountView(this);
|
||||||
late final $TodoItemWithCategoryNameViewView customViewName =
|
late final $TodoItemWithCategoryNameViewView customViewName =
|
||||||
$TodoItemWithCategoryNameViewView(this);
|
$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
|
@override
|
||||||
DriftDatabaseOptions get options =>
|
DriftDatabaseOptions get options =>
|
||||||
const DriftDatabaseOptions(storeDateTimeAsText: true);
|
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) {
|
} else if (element is DriftView) {
|
||||||
final source = element.source;
|
final source = element.source;
|
||||||
if (source is SqlViewSource) {
|
if (source is SqlViewSource) {
|
||||||
final stmt = parsedFile.statements
|
source.parsedStatement =
|
||||||
.whereType<CreateViewStatement>()
|
parsedFile.findStatement(element.declaration);
|
||||||
.firstWhere(
|
|
||||||
(e) => e.firstPosition == element.declaration.offset);
|
|
||||||
source.parsedStatement = stmt;
|
|
||||||
}
|
}
|
||||||
|
} 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);
|
_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 'element.dart';
|
||||||
import 'table.dart';
|
import 'table.dart';
|
||||||
|
|
||||||
|
@ -30,4 +32,10 @@ class DriftIndex extends DriftSchemaElement {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Iterable<DriftElement> get references => [if (table != null) table!];
|
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:drift/drift.dart';
|
||||||
|
import 'package:sqlparser/sqlparser.dart';
|
||||||
|
|
||||||
import 'element.dart';
|
import 'element.dart';
|
||||||
import 'query.dart';
|
import 'query.dart';
|
||||||
|
@ -32,4 +33,10 @@ class DriftTrigger extends DriftSchemaElement {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get dbGetterName => DriftSchemaElement.dbFieldName(id.name);
|
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,
|
returnType: tableClassName,
|
||||||
code: '$tableClassName(this)',
|
code: '$tableClassName(this)',
|
||||||
);
|
);
|
||||||
} /* else if (entity is DriftTrigger) {
|
} else if (entity is DriftTrigger) {
|
||||||
|
final sql = scope.sqlCode(entity.parsedStatement!);
|
||||||
|
|
||||||
writeMemoizedGetter(
|
writeMemoizedGetter(
|
||||||
buffer: dbScope.leaf().buffer,
|
buffer: dbScope.leaf().buffer,
|
||||||
getterName: entity.dbGetterName,
|
getterName: entity.dbGetterName,
|
||||||
returnType: 'Trigger',
|
returnType: 'Trigger',
|
||||||
code: 'Trigger(${asDartLiteral(entity.createSql(scope.options))}, '
|
code: 'Trigger(${asDartLiteral(sql)}, '
|
||||||
'${asDartLiteral(entity.displayName)})',
|
'${asDartLiteral(entity.schemaName)})',
|
||||||
);
|
);
|
||||||
} else if (entity is DriftIndex) {
|
} else if (entity is DriftIndex) {
|
||||||
|
final sql = scope.sqlCode(entity.parsedStatement!);
|
||||||
|
|
||||||
writeMemoizedGetter(
|
writeMemoizedGetter(
|
||||||
buffer: dbScope.leaf().buffer,
|
buffer: dbScope.leaf().buffer,
|
||||||
getterName: entity.dbGetterName,
|
getterName: entity.dbGetterName,
|
||||||
returnType: 'Index',
|
returnType: 'Index',
|
||||||
code: 'Index(${asDartLiteral(entity.displayName)}, '
|
code: 'Index(${asDartLiteral(entity.schemaName)}, '
|
||||||
'${asDartLiteral(entity.createSql(scope.options))})',
|
'${asDartLiteral(sql)})',
|
||||||
);
|
);
|
||||||
} */
|
} else if (entity is DriftView) {
|
||||||
else if (entity is DriftView) {
|
|
||||||
writeMemoizedGetter(
|
writeMemoizedGetter(
|
||||||
buffer: dbScope.leaf().buffer,
|
buffer: dbScope.leaf().buffer,
|
||||||
getterName: entity.dbGetterName,
|
getterName: entity.dbGetterName,
|
||||||
|
@ -130,7 +133,7 @@ class DatabaseWriter {
|
||||||
|
|
||||||
// Write List of tables
|
// Write List of tables
|
||||||
final schemaScope = dbScope.leaf();
|
final schemaScope = dbScope.leaf();
|
||||||
/*
|
|
||||||
schemaScope
|
schemaScope
|
||||||
..write(
|
..write(
|
||||||
'@override\nIterable<TableInfo<Table, dynamic>> get allTables => ')
|
'@override\nIterable<TableInfo<Table, dynamic>> get allTables => ')
|
||||||
|
@ -139,17 +142,16 @@ class DatabaseWriter {
|
||||||
..write('=> [');
|
..write('=> [');
|
||||||
|
|
||||||
schemaScope
|
schemaScope
|
||||||
..write(db.entities.map((e) {
|
..write(db.references.map((e) {
|
||||||
if (e is SpecialQuery) {
|
// if (e is SpecialQuery) {
|
||||||
final sql = e.formattedSql(scope.options);
|
// final sql = e.formattedSql(scope.options);
|
||||||
return 'OnCreateQuery(${asDartLiteral(sql)})';
|
// return 'OnCreateQuery(${asDartLiteral(sql)})';
|
||||||
}
|
// }
|
||||||
|
|
||||||
return entityGetters[e];
|
return entityGetters[e];
|
||||||
}).join(', '))
|
}).join(', '))
|
||||||
// close list literal and allSchemaEntities getter
|
// close list literal and allSchemaEntities getter
|
||||||
..write('];\n');
|
..write('];\n');
|
||||||
*/
|
|
||||||
|
|
||||||
final updateRules = FindStreamUpdateRules(db).identifyRules();
|
final updateRules = FindStreamUpdateRules(db).identifyRules();
|
||||||
if (updateRules.rules.isNotEmpty) {
|
if (updateRules.rules.isNotEmpty) {
|
||||||
|
|
|
@ -156,7 +156,8 @@ class QueryWriter {
|
||||||
|
|
||||||
final dartLiteral = asDartLiteral(specialName ?? column.name);
|
final dartLiteral = asDartLiteral(specialName ?? column.name);
|
||||||
final method = column.nullable ? 'readNullable' : 'read';
|
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)';
|
var code = 'row.$method<$rawDartType>($dartLiteral)';
|
||||||
|
|
||||||
final converter = column.typeConverter;
|
final converter = column.typeConverter;
|
||||||
|
|
|
@ -163,6 +163,10 @@ abstract class _NodeOrWriter {
|
||||||
|
|
||||||
return buffer.toString();
|
return buffer.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String sqlCode(sql.AstNode node) {
|
||||||
|
return SqlWriter(writer.options, escapeForDart: false).writeSql(node);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class _Node extends _NodeOrWriter {
|
abstract class _Node extends _NodeOrWriter {
|
||||||
|
|
Loading…
Reference in New Issue