From 496635afb53bbafc3857f8bb6c41db42a479aee3 Mon Sep 17 00:00:00 2001 From: ValentinVignal Date: Sat, 3 Dec 2022 15:55:58 +0800 Subject: [PATCH] :truck: Rename column_name_case into case_from_dart_to_sql --- .../docs/Advanced Features/builder_options.md | 2 +- drift_dev/CHANGELOG.md | 2 +- drift_dev/lib/src/analysis/options.dart | 14 ++++----- .../src/analysis/resolver/dart/column.dart | 20 ++++++------ .../lib/src/generated/analysis/options.g.dart | 31 ++++++++++--------- .../analysis/resolver/dart/column_test.dart | 21 ++++++++----- 6 files changed, 49 insertions(+), 41 deletions(-) diff --git a/docs/pages/docs/Advanced Features/builder_options.md b/docs/pages/docs/Advanced Features/builder_options.md index dd850d38..6f8a0518 100644 --- a/docs/pages/docs/Advanced Features/builder_options.md +++ b/docs/pages/docs/Advanced Features/builder_options.md @@ -71,7 +71,7 @@ At the moment, drift supports these options: Dart placeholders. * `store_date_time_values_as_text`: Whether date-time columns should be stored as ISO 8601 string instead of a unix timestamp. For more information on these modes, see [datetime options]({{ '../Getting started/advanced_dart_tables#datetime-options' | pageUrl }}). -* `column_name_case` (defaults to `snake_case`): Controls how the column names are re-cased from the Dart identifiers. +* `case_from_dart_to_sql` (defaults to `snake_case`): Controls how the table and column names are re-cased from the Dart identifiers. The possible values are `preserve`, `camelCase`, `CONSTANT_CASE`, `snake_case`, `PascalCase`, `lowercase` and `UPPERCASE` (default: `snake_case`). ## Assumed SQL environment diff --git a/drift_dev/CHANGELOG.md b/drift_dev/CHANGELOG.md index add71d10..c5e20546 100644 --- a/drift_dev/CHANGELOG.md +++ b/drift_dev/CHANGELOG.md @@ -1,7 +1,7 @@ ## 2.4.0-dev - Add the support for `textEnum`. -- Adds the `column_name_case` option with the possible values: `preserve`, `camelCase`, `CONSTANT_CASE`, `snake_case`, `PascalCase`, `lowercase` and `UPPERCASE` (default: `snake_case`). +- Adds the `case_from_dart_to_sql` option with the possible values: `preserve`, `camelCase`, `CONSTANT_CASE`, `snake_case`, `PascalCase`, `lowercase` and `UPPERCASE` (default: `snake_case`). ## 2.3.2 diff --git a/drift_dev/lib/src/analysis/options.dart b/drift_dev/lib/src/analysis/options.dart index 0f98d533..8231b3b6 100644 --- a/drift_dev/lib/src/analysis/options.dart +++ b/drift_dev/lib/src/analysis/options.dart @@ -90,8 +90,8 @@ class DriftOptions { @JsonKey(defaultValue: false) final bool storeDateTimeValuesAsText; - @JsonKey(name: 'column_name_case', defaultValue: ColumnNameCase.snake) - final ColumnNameCase columnNameCase; + @JsonKey(name: 'case_from_dart_to_sql', defaultValue: CaseFromDartToSql.snake) + final CaseFromDartToSql caseFromDartToSql; @internal const DriftOptions.defaults({ @@ -113,7 +113,7 @@ class DriftOptions { this.sqliteAnalysisOptions, this.storeDateTimeValuesAsText = false, this.dialect = const DialectOptions(SqlDialect.sqlite, null), - this.columnNameCase = ColumnNameCase.snake, + this.caseFromDartToSql = CaseFromDartToSql.snake, }); DriftOptions({ @@ -134,7 +134,7 @@ class DriftOptions { required this.modules, required this.sqliteAnalysisOptions, required this.storeDateTimeValuesAsText, - required this.columnNameCase, + required this.caseFromDartToSql, this.dialect, }) { // ignore: deprecated_member_use_from_same_package @@ -364,9 +364,9 @@ enum SqlModule { spellfix1, } -/// The possible values for the case of the column names. -enum ColumnNameCase { - /// Preserves the case of the column name as it is in the dart code. +/// The possible values for the case of the table and column names. +enum CaseFromDartToSql { + /// Preserves the case of the name as it is in the dart code. /// /// `myColumn` -> `myColumn`. preserve, diff --git a/drift_dev/lib/src/analysis/resolver/dart/column.dart b/drift_dev/lib/src/analysis/resolver/dart/column.dart index 0304e3ce..014af449 100644 --- a/drift_dev/lib/src/analysis/resolver/dart/column.dart +++ b/drift_dev/lib/src/analysis/resolver/dart/column.dart @@ -336,9 +336,9 @@ class ColumnParser { remainingExpr = inner; } - _resolver.resolver.driver.options.columnNameCase; + _resolver.resolver.driver.options.caseFromDartToSql; final sqlName = foundExplicitName ?? - _resolver.resolver.driver.options.columnNameCase + _resolver.resolver.driver.options.caseFromDartToSql .apply(getter.name.lexeme); final sqlType = _startMethodToColumnType(foundStartMethod); final helper = await _resolver.resolver.driver.loadKnownTypes(); @@ -492,23 +492,23 @@ class PendingColumnInformation { PendingColumnInformation(this.column, {this.referencesColumnInSameTable}); } -extension on ColumnNameCase { +extension on CaseFromDartToSql { String apply(String name) { final reCase = ReCase(name); switch (this) { - case ColumnNameCase.preserve: + case CaseFromDartToSql.preserve: return name; - case ColumnNameCase.camel: + case CaseFromDartToSql.camel: return reCase.camelCase; - case ColumnNameCase.constant: + case CaseFromDartToSql.constant: return reCase.constantCase; - case ColumnNameCase.snake: + case CaseFromDartToSql.snake: return reCase.snakeCase; - case ColumnNameCase.pascal: + case CaseFromDartToSql.pascal: return reCase.pascalCase; - case ColumnNameCase.lower: + case CaseFromDartToSql.lower: return name.toLowerCase(); - case ColumnNameCase.upper: + case CaseFromDartToSql.upper: return name.toUpperCase(); } } diff --git a/drift_dev/lib/src/generated/analysis/options.g.dart b/drift_dev/lib/src/generated/analysis/options.g.dart index cebe3b10..f90cf24c 100644 --- a/drift_dev/lib/src/generated/analysis/options.g.dart +++ b/drift_dev/lib/src/generated/analysis/options.g.dart @@ -31,7 +31,7 @@ DriftOptions _$DriftOptionsFromJson(Map json) => $checkedCreate( 'named_parameters_always_required', 'scoped_dart_components', 'store_date_time_values_as_text', - 'column_name_case' + 'case_from_dart_to_sql' ], ); final val = DriftOptions( @@ -78,11 +78,11 @@ DriftOptions _$DriftOptionsFromJson(Map json) => $checkedCreate( v == null ? null : SqliteAnalysisOptions.fromJson(v as Map)), storeDateTimeValuesAsText: $checkedConvert( 'store_date_time_values_as_text', (v) => v as bool? ?? false), - columnNameCase: $checkedConvert( - 'column_name_case', + caseFromDartToSql: $checkedConvert( + 'case_from_dart_to_sql', (v) => - $enumDecodeNullable(_$ColumnNameCaseEnumMap, v) ?? - ColumnNameCase.snake), + $enumDecodeNullable(_$CaseFromDartToSqlEnumMap, v) ?? + CaseFromDartToSql.snake), dialect: $checkedConvert('sql', (v) => v == null ? null : DialectOptions.fromJson(v as Map)), ); @@ -109,7 +109,7 @@ DriftOptions _$DriftOptionsFromJson(Map json) => $checkedCreate( 'modules': 'sqlite_modules', 'sqliteAnalysisOptions': 'sqlite', 'storeDateTimeValuesAsText': 'store_date_time_values_as_text', - 'columnNameCase': 'column_name_case', + 'caseFromDartToSql': 'case_from_dart_to_sql', 'dialect': 'sql' }, ); @@ -140,7 +140,8 @@ Map _$DriftOptionsToJson(DriftOptions instance) => instance.namedParametersAlwaysRequired, 'scoped_dart_components': instance.scopedDartComponents, 'store_date_time_values_as_text': instance.storeDateTimeValuesAsText, - 'column_name_case': _$ColumnNameCaseEnumMap[instance.columnNameCase]!, + 'case_from_dart_to_sql': + _$CaseFromDartToSqlEnumMap[instance.caseFromDartToSql]!, }; const _$SqlModuleEnumMap = { @@ -152,14 +153,14 @@ const _$SqlModuleEnumMap = { SqlModule.spellfix1: 'spellfix1', }; -const _$ColumnNameCaseEnumMap = { - ColumnNameCase.preserve: 'preserve', - ColumnNameCase.camel: 'camelCase', - ColumnNameCase.constant: 'CONSTANT_CASE', - ColumnNameCase.snake: 'snake_case', - ColumnNameCase.pascal: 'PascalCase', - ColumnNameCase.lower: 'lowercase', - ColumnNameCase.upper: 'UPPERCASE', +const _$CaseFromDartToSqlEnumMap = { + CaseFromDartToSql.preserve: 'preserve', + CaseFromDartToSql.camel: 'camelCase', + CaseFromDartToSql.constant: 'CONSTANT_CASE', + CaseFromDartToSql.snake: 'snake_case', + CaseFromDartToSql.pascal: 'PascalCase', + CaseFromDartToSql.lower: 'lowercase', + CaseFromDartToSql.upper: 'UPPERCASE', }; DialectOptions _$DialectOptionsFromJson(Map json) => $checkedCreate( diff --git a/drift_dev/test/analysis/resolver/dart/column_test.dart b/drift_dev/test/analysis/resolver/dart/column_test.dart index ab75977a..877090df 100644 --- a/drift_dev/test/analysis/resolver/dart/column_test.dart +++ b/drift_dev/test/analysis/resolver/dart/column_test.dart @@ -48,7 +48,8 @@ class TestTable extends Table { class Database {} ''' }, - options: DriftOptions.defaults(columnNameCase: ColumnNameCase.snake), + options: + DriftOptions.defaults(caseFromDartToSql: CaseFromDartToSql.snake), ); final file = await state.analyze('package:a/main.dart'); @@ -77,7 +78,8 @@ class TestTable extends Table { class Database {} ''' }, - options: DriftOptions.defaults(columnNameCase: ColumnNameCase.preserve), + options: + DriftOptions.defaults(caseFromDartToSql: CaseFromDartToSql.preserve), ); final file = await state.analyze('package:a/main.dart'); @@ -105,7 +107,8 @@ class TestTable extends Table { class Database {} ''' }, - options: DriftOptions.defaults(columnNameCase: ColumnNameCase.camel), + options: + DriftOptions.defaults(caseFromDartToSql: CaseFromDartToSql.camel), ); final file = await state.analyze('package:a/main.dart'); @@ -134,7 +137,8 @@ class TestTable extends Table { class Database {} ''' }, - options: DriftOptions.defaults(columnNameCase: ColumnNameCase.constant), + options: + DriftOptions.defaults(caseFromDartToSql: CaseFromDartToSql.constant), ); final file = await state.analyze('package:a/main.dart'); @@ -162,7 +166,8 @@ class TestTable extends Table { class Database {} ''' }, - options: DriftOptions.defaults(columnNameCase: ColumnNameCase.pascal), + options: + DriftOptions.defaults(caseFromDartToSql: CaseFromDartToSql.pascal), ); final file = await state.analyze('package:a/main.dart'); @@ -190,7 +195,8 @@ class TestTable extends Table { class Database {} ''' }, - options: DriftOptions.defaults(columnNameCase: ColumnNameCase.lower), + options: + DriftOptions.defaults(caseFromDartToSql: CaseFromDartToSql.lower), ); final file = await state.analyze('package:a/main.dart'); @@ -218,7 +224,8 @@ class TestTable extends Table { class Database {} ''' }, - options: DriftOptions.defaults(columnNameCase: ColumnNameCase.upper), + options: + DriftOptions.defaults(caseFromDartToSql: CaseFromDartToSql.upper), ); final file = await state.analyze('package:a/main.dart');