From 3cd64901d65927f36557e26d477da2e42c76734b Mon Sep 17 00:00:00 2001 From: Moshe Dicker Date: Wed, 3 Apr 2024 14:10:47 -0400 Subject: [PATCH] add option --- drift_dev/lib/src/analysis/options.dart | 6 ++++++ .../lib/src/generated/analysis/options.g.dart | 5 +++++ drift_dev/lib/src/writer/database_writer.dart | 15 +++++++++------ 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/drift_dev/lib/src/analysis/options.dart b/drift_dev/lib/src/analysis/options.dart index a4d871cc..937093d4 100644 --- a/drift_dev/lib/src/analysis/options.dart +++ b/drift_dev/lib/src/analysis/options.dart @@ -61,6 +61,10 @@ class DriftOptions { @JsonKey(name: 'generate_connect_constructor', defaultValue: false) final bool generateConnectConstructor; + /// Generate managers to assist with common database operations. + @JsonKey(name: 'generate_manager', defaultValue: true) + final bool generateManager; + @JsonKey(name: 'sqlite_modules', defaultValue: []) @Deprecated('Use effectiveModules instead') final List modules; @@ -128,6 +132,7 @@ class DriftOptions { this.useColumnNameAsJsonKeyWhenDefinedInMoorFile = true, this.useSqlColumnNameAsJsonKey = false, this.generateConnectConstructor = false, + this.generateManager = true, this.dataClassToCompanions = true, this.generateMutableClasses = false, this.rawResultSetData = false, @@ -156,6 +161,7 @@ class DriftOptions { required this.useColumnNameAsJsonKeyWhenDefinedInMoorFile, required this.useSqlColumnNameAsJsonKey, required this.generateConnectConstructor, + required this.generateManager, required this.dataClassToCompanions, required this.generateMutableClasses, required this.rawResultSetData, diff --git a/drift_dev/lib/src/generated/analysis/options.g.dart b/drift_dev/lib/src/generated/analysis/options.g.dart index 3872438b..b53f7a7d 100644 --- a/drift_dev/lib/src/generated/analysis/options.g.dart +++ b/drift_dev/lib/src/generated/analysis/options.g.dart @@ -20,6 +20,7 @@ DriftOptions _$DriftOptionsFromJson(Map json) => $checkedCreate( 'use_column_name_as_json_key_when_defined_in_moor_file', 'use_sql_column_name_as_json_key', 'generate_connect_constructor', + 'generate_manager', 'sqlite_modules', 'sqlite', 'sql', @@ -57,6 +58,8 @@ DriftOptions _$DriftOptionsFromJson(Map json) => $checkedCreate( 'use_sql_column_name_as_json_key', (v) => v as bool? ?? false), generateConnectConstructor: $checkedConvert( 'generate_connect_constructor', (v) => v as bool? ?? false), + generateManager: + $checkedConvert('generate_manager', (v) => v as bool? ?? true), dataClassToCompanions: $checkedConvert( 'data_class_to_companions', (v) => v as bool? ?? true), generateMutableClasses: @@ -116,6 +119,7 @@ DriftOptions _$DriftOptionsFromJson(Map json) => $checkedCreate( 'use_column_name_as_json_key_when_defined_in_moor_file', 'useSqlColumnNameAsJsonKey': 'use_sql_column_name_as_json_key', 'generateConnectConstructor': 'generate_connect_constructor', + 'generateManager': 'generate_manager', 'dataClassToCompanions': 'data_class_to_companions', 'generateMutableClasses': 'mutable_classes', 'rawResultSetData': 'raw_result_set_data', @@ -149,6 +153,7 @@ Map _$DriftOptionsToJson(DriftOptions instance) => instance.useColumnNameAsJsonKeyWhenDefinedInMoorFile, 'use_sql_column_name_as_json_key': instance.useSqlColumnNameAsJsonKey, 'generate_connect_constructor': instance.generateConnectConstructor, + 'generate_manager': instance.generateManager, 'sqlite_modules': instance.modules.map((e) => _$SqlModuleEnumMap[e]!).toList(), 'sqlite': instance.sqliteAnalysisOptions?.toJson(), diff --git a/drift_dev/lib/src/writer/database_writer.dart b/drift_dev/lib/src/writer/database_writer.dart index 48bb6223..1d1b00e4 100644 --- a/drift_dev/lib/src/writer/database_writer.dart +++ b/drift_dev/lib/src/writer/database_writer.dart @@ -148,13 +148,16 @@ class DatabaseWriter { } } - final managerWriter = ManagerWriter(scope.child(), dbScope, dbClassName); - for (var table in elements.whereType()) { - managerWriter.addTable(table); + // Write the main database manager & all the managers for tables + if (scope.options.generateManager) { + final managerWriter = ManagerWriter(scope.child(), dbScope, dbClassName); + for (var table in elements.whereType()) { + managerWriter.addTable(table); + } + managerWriter.write(); + // Add getter for the manager to the database class + firstLeaf.writeln(managerWriter.managerGetter); } - managerWriter.write(); - - firstLeaf.writeln(managerWriter.managerGetter); // Write implementation for query methods for (final query in input.availableRegularQueries) {