From 4bc6dfe834af5c3368c46ef76dfd11e189d85c9e Mon Sep 17 00:00:00 2001 From: Simon Binder Date: Mon, 12 Dec 2022 22:18:10 +0100 Subject: [PATCH 1/2] Fox crash when serializing simple queries --- .../lib/src/services/schema/schema_files.dart | 26 ++++++++++--------- .../test/services/schema/writer_test.dart | 2 ++ 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/drift_dev/lib/src/services/schema/schema_files.dart b/drift_dev/lib/src/services/schema/schema_files.dart index be892f86..ea4cd125 100644 --- a/drift_dev/lib/src/services/schema/schema_files.dart +++ b/drift_dev/lib/src/services/schema/schema_files.dart @@ -31,9 +31,7 @@ class SchemaWriter { 'version': _infoVersion, }, 'options': _serializeOptions(), - 'entities': [ - for (final entity in elements) _entityToJson(entity), - ], + 'entities': elements.map(_entityToJson).whereType().toList(), }; } @@ -45,9 +43,9 @@ class SchemaWriter { return asJson; } - Map _entityToJson(DriftElement entity) { - String type; - Map data; + Map? _entityToJson(DriftElement entity) { + String? type; + Map? data; if (entity is DriftTable) { type = 'table'; @@ -86,16 +84,20 @@ class SchemaWriter { 'dart_info_name': entity.entityInfoName, 'columns': [for (final column in entity.columns) _columnData(column)], }; - } else if (entity is DefinedSqlQuery && entity.mode == QueryMode.atCreate) { - type = 'special-query'; - data = { - 'scenario': 'create', - 'sql': entity.sql, - }; + } else if (entity is DefinedSqlQuery) { + if (entity.mode == QueryMode.atCreate) { + type = 'special-query'; + data = { + 'scenario': 'create', + 'sql': entity.sql, + }; + } } else { throw AssertionError('unknown entity type $entity'); } + if (type == null) return null; + return { 'id': _idOf(entity), 'references': [ diff --git a/drift_dev/test/services/schema/writer_test.dart b/drift_dev/test/services/schema/writer_test.dart index 26062ea3..a50e0dbc 100644 --- a/drift_dev/test/services/schema/writer_test.dart +++ b/drift_dev/test/services/schema/writer_test.dart @@ -43,6 +43,8 @@ END; CREATE INDEX groups_name ON "groups"(name); CREATE VIEW my_view AS SELECT id FROM "groups"; + +simple_query: SELECT * FROM my_view; -- not part of the schema ''', 'a|lib/main.dart': ''' import 'package:drift/drift.dart'; From 44e7aea043335f13c87f8d68dfac3b3c0769f359 Mon Sep 17 00:00:00 2001 From: Simon Binder Date: Mon, 12 Dec 2022 22:39:00 +0100 Subject: [PATCH 2/2] Prepare drift_dev 2.3.3 release --- drift_dev/CHANGELOG.md | 4 ++++ drift_dev/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/drift_dev/CHANGELOG.md b/drift_dev/CHANGELOG.md index 1a6b120d..ff0b78ab 100644 --- a/drift_dev/CHANGELOG.md +++ b/drift_dev/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.3.3 + +- Fix a crash in `schema generate`. + ## 2.3.2 - Fix a builder crash when importing triggers or indices. diff --git a/drift_dev/pubspec.yaml b/drift_dev/pubspec.yaml index 4a5199a6..5ca900e4 100644 --- a/drift_dev/pubspec.yaml +++ b/drift_dev/pubspec.yaml @@ -1,6 +1,6 @@ name: drift_dev description: Dev-dependency for users of drift. Contains a the generator and development tools. -version: 2.3.2 +version: 2.3.3 repository: https://github.com/simolus3/drift homepage: https://drift.simonbinder.eu/ issue_tracker: https://github.com/simolus3/drift/issues