diff --git a/drift/lib/src/runtime/devtools/shared.dart b/drift/lib/src/runtime/devtools/shared.dart index 060ddd242..c0757cac5 100644 --- a/drift/lib/src/runtime/devtools/shared.dart +++ b/drift/lib/src/runtime/devtools/shared.dart @@ -2,18 +2,14 @@ @internal library; -import 'package:json_annotation/json_annotation.dart'; import 'package:meta/meta.dart'; import '../api/runtime_api.dart'; import '../query_builder/query_builder.dart'; import '../types/mapping.dart'; -part 'shared.g.dart'; - typedef JsonObject = Map; -@JsonSerializable() class TypeDescription { final DriftSqlType? type; final String? customTypeName; @@ -28,16 +24,26 @@ class TypeDescription { }; } - factory TypeDescription.fromJson(JsonObject obj) => - _$TypeDescriptionFromJson(obj); + factory TypeDescription.fromJson(JsonObject obj) { + final typeName = obj['type'] as String?; + + return TypeDescription( + type: typeName != null ? DriftSqlType.values.byName(typeName) : null, + customTypeName: obj['customTypeName'] as String?, + ); + } - JsonObject toJson() => _$TypeDescriptionToJson(this); + JsonObject toJson() { + return { + 'type': type?.name, + 'customTypeName': customTypeName, + }; + } } -@JsonSerializable() class ColumnDescription { final String name; - final TypeDescription? type; + final TypeDescription type; final bool isNullable; ColumnDescription( @@ -52,13 +58,23 @@ class ColumnDescription { ); } - factory ColumnDescription.fromJson(JsonObject obj) => - _$ColumnDescriptionFromJson(obj); + factory ColumnDescription.fromJson(JsonObject obj) { + return ColumnDescription( + name: obj['name'] as String, + type: TypeDescription.fromJson(obj['type'] as JsonObject), + isNullable: obj['isNullable'] as bool, + ); + } - JsonObject toJson() => _$ColumnDescriptionToJson(this); + JsonObject toJson() { + return { + 'name': name, + 'type': type.toJson(), + 'isNullable': isNullable, + }; + } } -@JsonSerializable() class EntityDescription { final String name; final String type; @@ -93,13 +109,28 @@ class EntityDescription { ); } - factory EntityDescription.fromJson(JsonObject obj) => - _$EntityDescriptionFromJson(obj); + factory EntityDescription.fromJson(JsonObject obj) { + return EntityDescription( + name: obj['name'] as String, + type: obj['type'] as String, + columns: (obj['columns'] as List) + .map((e) => ColumnDescription.fromJson(e as JsonObject)) + .toList(), + ); + } - JsonObject toJson() => _$EntityDescriptionToJson(this); + JsonObject toJson() { + return { + 'name': name, + 'type': type, + 'columns': [ + if (columns != null) + for (final column in columns!) column.toJson() + ], + }; + } } -@JsonSerializable() class DatabaseDescription { final bool dateTimeAsText; final List entities; @@ -124,8 +155,19 @@ class DatabaseDescription { ); } - factory DatabaseDescription.fromJson(JsonObject obj) => - _$DatabaseDescriptionFromJson(obj); + factory DatabaseDescription.fromJson(JsonObject obj) { + return DatabaseDescription( + dateTimeAsText: obj['dateTimeAsText'] as bool, + entities: (obj['entities'] as List) + .map((e) => EntityDescription.fromJson(e as Map)) + .toList(), + ); + } - JsonObject toJson() => _$DatabaseDescriptionToJson(this); + JsonObject toJson() { + return { + 'dateTimeAsText': dateTimeAsText, + 'entities': [for (final entity in entities) entity.toJson()], + }; + } } diff --git a/drift/pubspec.yaml b/drift/pubspec.yaml index 54d7e06b8..5a20dc523 100644 --- a/drift/pubspec.yaml +++ b/drift/pubspec.yaml @@ -13,7 +13,6 @@ dependencies: convert: ^3.0.0 collection: ^1.15.0 js: ^0.6.3 - json_annotation: ^4.8.1 meta: ^1.3.0 stream_channel: ^2.1.0 sqlite3: ^2.0.0 @@ -25,7 +24,6 @@ dev_dependencies: build_runner_core: ^7.0.0 build_verify: ^3.0.0 build_web_compilers: ^4.0.3 - json_serializable: ^6.7.1 drift_dev: any drift_testcases: path: ../extras/integration_tests/drift_testcases diff --git a/extras/drift_devtools_extension/lib/src/db_viewer/database.dart b/extras/drift_devtools_extension/lib/src/db_viewer/database.dart index c36450b0e..79a6cf579 100644 --- a/extras/drift_devtools_extension/lib/src/db_viewer/database.dart +++ b/extras/drift_devtools_extension/lib/src/db_viewer/database.dart @@ -76,7 +76,7 @@ class ViewerDatabase implements DbViewerDatabase { @override String getType(String entityName, String columnName) { final type = database.description.entitiesByName[entityName]! - .columnsByName[columnName]!.type!; + .columnsByName[columnName]!.type; final genContext = GenerationContext( DriftDatabaseOptions( storeDateTimeAsText: database.description.dateTimeAsText), @@ -101,7 +101,7 @@ class ViewerDatabase implements DbViewerDatabase { final resolvedColumn = entity.columnsByName[column]; if (resolvedColumn != null) { - final type = resolvedColumn.type?.type ?? DriftSqlType.any; + final type = resolvedColumn.type.type ?? DriftSqlType.any; mappedRow[column] = types.read(type, value); } else { diff --git a/extras/drift_devtools_extension/lib/src/list.dart b/extras/drift_devtools_extension/lib/src/list.dart index 2ae95d813..f5a440395 100644 --- a/extras/drift_devtools_extension/lib/src/list.dart +++ b/extras/drift_devtools_extension/lib/src/list.dart @@ -135,7 +135,7 @@ class _DatabaseListState extends ConsumerState { class _DatabaseEntry extends ConsumerWidget { final TrackedDatabase database; - const _DatabaseEntry({super.key, required this.database}); + const _DatabaseEntry({required this.database}); @override Widget build(BuildContext context, WidgetRef ref) {