From 162f3343305109c3bc7f465c4117accdf95af1b2 Mon Sep 17 00:00:00 2001 From: Alexander Wilde Date: Sat, 31 Dec 2022 23:44:02 +0000 Subject: [PATCH 1/5] Fix missing override when writing toColumns mixin --- drift_dev/lib/src/writer/tables/data_class_writer.dart | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drift_dev/lib/src/writer/tables/data_class_writer.dart b/drift_dev/lib/src/writer/tables/data_class_writer.dart index aa7f209e..6daad89f 100644 --- a/drift_dev/lib/src/writer/tables/data_class_writer.dart +++ b/drift_dev/lib/src/writer/tables/data_class_writer.dart @@ -66,6 +66,9 @@ class DataClassWriter { if (column.documentationComment != null) { _buffer.write('${column.documentationComment}\n'); } + if (scope.options.writeToColumnsMixins) { + _buffer.writeln('@override'); + } final modifier = scope.options.fieldModifier; _buffer.writeln('$modifier ${_columnType(column)} ${column.nameInDart};'); } From 443759f02ffeb544d4215954697249a55aa56002 Mon Sep 17 00:00:00 2001 From: Alexander Wilde Date: Sat, 31 Dec 2022 23:44:45 +0000 Subject: [PATCH 2/5] Only write `toCompanion` if `writeCompanions` is enabled --- drift_dev/lib/src/writer/tables/data_class_writer.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drift_dev/lib/src/writer/tables/data_class_writer.dart b/drift_dev/lib/src/writer/tables/data_class_writer.dart index 6daad89f..4d9d331e 100644 --- a/drift_dev/lib/src/writer/tables/data_class_writer.dart +++ b/drift_dev/lib/src/writer/tables/data_class_writer.dart @@ -100,7 +100,8 @@ class DataClassWriter { if (!scope.options.writeToColumnsMixins) { _emitter.writeToColumnsOverride(columns); } - if (scope.options.dataClassToCompanions) { + if (scope.options.dataClassToCompanions && + scope.generationOptions.writeCompanions) { _writeToCompanion(); } } From 132d53fbb80646bddc50f73927b0fc6d705f6731 Mon Sep 17 00:00:00 2001 From: Alexander Wilde Date: Sat, 31 Dec 2022 23:45:28 +0000 Subject: [PATCH 3/5] Only write toColumns mixin if `writeDataClasses` is enabled --- drift_dev/lib/src/writer/tables/table_writer.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drift_dev/lib/src/writer/tables/table_writer.dart b/drift_dev/lib/src/writer/tables/table_writer.dart index 92d27f2d..7860e6cf 100644 --- a/drift_dev/lib/src/writer/tables/table_writer.dart +++ b/drift_dev/lib/src/writer/tables/table_writer.dart @@ -272,11 +272,11 @@ class TableWriter extends TableOrViewWriter { } void writeDataClass() { - if (scope.options.writeToColumnsMixins) { - writeToColumnsMixin(); - } - if (scope.generationOptions.writeDataClasses) { + if (scope.options.writeToColumnsMixins) { + writeToColumnsMixin(); + } + final existing = table.existingRowClass; if (existing != null) { // We don't have to write a row class if we're using one provided by the From 624c145cfd9a712673b48340ad397f53488dc97d Mon Sep 17 00:00:00 2001 From: Alexander Wilde Date: Sun, 1 Jan 2023 17:42:31 +0000 Subject: [PATCH 4/5] companions flag shouldn't depend on data classes flag --- .../src/writer/tables/update_companion_writer.dart | 11 ++++++----- drift_dev/test/writer/queries/query_writer_test.dart | 6 +++--- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/drift_dev/lib/src/writer/tables/update_companion_writer.dart b/drift_dev/lib/src/writer/tables/update_companion_writer.dart index 4461d707..0a74bdd7 100644 --- a/drift_dev/lib/src/writer/tables/update_companion_writer.dart +++ b/drift_dev/lib/src/writer/tables/update_companion_writer.dart @@ -25,12 +25,14 @@ class UpdateCompanionWriter { String get _companionClass => _emitter.companionType(table).toString(); String get _companionType => _emitter.dartCode(_emitter.companionType(table)); - void write() { - final rowClass = _emitter.dartCode(_emitter.rowType(table)); + String get _rowType => scope.generationOptions.writeDataClasses + ? _emitter.dartCode(_emitter.rowType(table)) + : 'dynamic'; + void write() { _buffer.write('class $_companionClass ' 'extends ' - '${_emitter.drift('UpdateCompanion')}<$rowClass> {\n'); + '${_emitter.drift('UpdateCompanion')}<$_rowType> {\n'); _writeFields(); _writeConstructor(); @@ -124,10 +126,9 @@ class UpdateCompanionWriter { ? 'createCustom' : 'custom'; - final rowType = _emitter.dartCode(_emitter.rowType(table)); _buffer ..write( - 'static ${_emitter.drift('Insertable')}<$rowType> $constructorName') + 'static ${_emitter.drift('Insertable')}<$_rowType> $constructorName') ..write('({'); final expression = _emitter.drift('Expression'); diff --git a/drift_dev/test/writer/queries/query_writer_test.dart b/drift_dev/test/writer/queries/query_writer_test.dart index 6c99bbf1..1d837b7d 100644 --- a/drift_dev/test/writer/queries/query_writer_test.dart +++ b/drift_dev/test/writer/queries/query_writer_test.dart @@ -206,20 +206,20 @@ class MyRow { checkOutputs( { 'a|lib/a.drift.dart': decodedMatches(contains(''' - i1.Selectable foo() { + i0.Selectable foo() { return customSelect( 'SELECT name,"otherUser"."id" AS "nested_0.id", "otherUser"."name" AS "nested_0.name" FROM users INNER JOIN users AS otherUser ON otherUser.id = users.id + 1', variables: [], readsFrom: { users, - }).asyncMap((i1.QueryRow row) async => i0.MyRow( + }).asyncMap((i0.QueryRow row) async => i1.MyRow( row.read('name'), otherUser: await users.mapFromRow(row, tablePrefix: 'nested_0'), nested: await customSelect('SELECT id FROM users', variables: [], readsFrom: { users, - }).map((i1.QueryRow row) => row.read('id')).get(), + }).map((i0.QueryRow row) => row.read('id')).get(), )); } ''')) From 31d58fbf779aee5989493f3073fe37db15f3315f Mon Sep 17 00:00:00 2001 From: Alexander Wilde Date: Sun, 1 Jan 2023 23:22:31 +0000 Subject: [PATCH 5/5] Sort schema versions --- drift_dev/lib/src/cli/commands/schema/generate_utils.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drift_dev/lib/src/cli/commands/schema/generate_utils.dart b/drift_dev/lib/src/cli/commands/schema/generate_utils.dart index 029bab2b..6af4dc08 100644 --- a/drift_dev/lib/src/cli/commands/schema/generate_utils.dart +++ b/drift_dev/lib/src/cli/commands/schema/generate_utils.dart @@ -75,7 +75,8 @@ class GenerateUtilsCommand extends Command { ); } - await _writeLibraryFile(outputDir, schema.keys); + final versions = schema.keys.toList()..sort(); + await _writeLibraryFile(outputDir, versions); print( 'Wrote ${schema.length + 1} files into ${p.relative(outputDir.path)}'); }