mirror of https://github.com/AMT-Cheif/drift.git
Start phasing out SqlTypeSystem
This commit is contained in:
parent
eb5196e9e8
commit
adb27d056b
|
@ -14,11 +14,10 @@ class User extends DataClass implements Insertable<User> {
|
|||
factory User.fromData(Map<String, dynamic> data, GeneratedDatabase db,
|
||||
{String prefix}) {
|
||||
final effectivePrefix = prefix ?? '';
|
||||
final intType = db.typeSystem.forDartType<int>();
|
||||
final stringType = db.typeSystem.forDartType<String>();
|
||||
return User(
|
||||
id: intType.mapFromDatabaseResponse(data['${effectivePrefix}id']),
|
||||
name: stringType.mapFromDatabaseResponse(data['${effectivePrefix}name']),
|
||||
id: const IntType().mapFromDatabaseResponse(data['${effectivePrefix}id']),
|
||||
name: const StringType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}name']),
|
||||
);
|
||||
}
|
||||
@override
|
||||
|
|
|
@ -14,11 +14,10 @@ class Category extends DataClass implements Insertable<Category> {
|
|||
factory Category.fromData(Map<String, dynamic> data, GeneratedDatabase db,
|
||||
{String? prefix}) {
|
||||
final effectivePrefix = prefix ?? '';
|
||||
final intType = db.typeSystem.forDartType<int>();
|
||||
final stringType = db.typeSystem.forDartType<String>();
|
||||
return Category(
|
||||
id: intType.mapFromDatabaseResponse(data['${effectivePrefix}id'])!,
|
||||
description: stringType
|
||||
id: const IntType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}id'])!,
|
||||
description: const StringType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}description']),
|
||||
);
|
||||
}
|
||||
|
@ -215,16 +214,15 @@ class Recipe extends DataClass implements Insertable<Recipe> {
|
|||
factory Recipe.fromData(Map<String, dynamic> data, GeneratedDatabase db,
|
||||
{String? prefix}) {
|
||||
final effectivePrefix = prefix ?? '';
|
||||
final intType = db.typeSystem.forDartType<int>();
|
||||
final stringType = db.typeSystem.forDartType<String>();
|
||||
return Recipe(
|
||||
id: intType.mapFromDatabaseResponse(data['${effectivePrefix}id'])!,
|
||||
title:
|
||||
stringType.mapFromDatabaseResponse(data['${effectivePrefix}title'])!,
|
||||
instructions: stringType
|
||||
id: const IntType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}id'])!,
|
||||
title: const StringType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}title'])!,
|
||||
instructions: const StringType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}instructions'])!,
|
||||
category:
|
||||
intType.mapFromDatabaseResponse(data['${effectivePrefix}category']),
|
||||
category: const IntType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}category']),
|
||||
);
|
||||
}
|
||||
@override
|
||||
|
@ -487,13 +485,13 @@ class Ingredient extends DataClass implements Insertable<Ingredient> {
|
|||
factory Ingredient.fromData(Map<String, dynamic> data, GeneratedDatabase db,
|
||||
{String? prefix}) {
|
||||
final effectivePrefix = prefix ?? '';
|
||||
final intType = db.typeSystem.forDartType<int>();
|
||||
final stringType = db.typeSystem.forDartType<String>();
|
||||
return Ingredient(
|
||||
id: intType.mapFromDatabaseResponse(data['${effectivePrefix}id'])!,
|
||||
name: stringType.mapFromDatabaseResponse(data['${effectivePrefix}name'])!,
|
||||
caloriesPer100g:
|
||||
intType.mapFromDatabaseResponse(data['${effectivePrefix}calories'])!,
|
||||
id: const IntType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}id'])!,
|
||||
name: const StringType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}name'])!,
|
||||
caloriesPer100g: const IntType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}calories'])!,
|
||||
);
|
||||
}
|
||||
@override
|
||||
|
@ -723,14 +721,13 @@ class IngredientInRecipe extends DataClass
|
|||
Map<String, dynamic> data, GeneratedDatabase db,
|
||||
{String? prefix}) {
|
||||
final effectivePrefix = prefix ?? '';
|
||||
final intType = db.typeSystem.forDartType<int>();
|
||||
return IngredientInRecipe(
|
||||
recipe:
|
||||
intType.mapFromDatabaseResponse(data['${effectivePrefix}recipe'])!,
|
||||
ingredient: intType
|
||||
recipe: const IntType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}recipe'])!,
|
||||
ingredient: const IntType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}ingredient'])!,
|
||||
amountInGrams:
|
||||
intType.mapFromDatabaseResponse(data['${effectivePrefix}amount'])!,
|
||||
amountInGrams: const IntType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}amount'])!,
|
||||
);
|
||||
}
|
||||
@override
|
||||
|
|
|
@ -9,6 +9,7 @@ part of 'runtime_api.dart';
|
|||
class DatabaseConnection {
|
||||
/// The type system to use with this database. The type system is responsible
|
||||
/// for mapping Dart objects into sql expressions and vice-versa.
|
||||
@Deprecated('Only the default type system is supported')
|
||||
final SqlTypeSystem typeSystem;
|
||||
|
||||
/// The executor to use when queries are executed.
|
||||
|
|
|
@ -95,8 +95,7 @@ class Constant<T> extends Expression<T> {
|
|||
|
||||
@override
|
||||
void writeInto(GenerationContext context) {
|
||||
final type = context.typeSystem.forDartType<T>();
|
||||
context.buffer.write(type.mapToSqlConstant(value));
|
||||
context.buffer.write(SqlTypeSystem.mapToSqlConstant(value));
|
||||
}
|
||||
|
||||
@override
|
||||
|
|
|
@ -1,14 +1,18 @@
|
|||
import 'dart:typed_data';
|
||||
|
||||
// ignore: import_of_legacy_library_into_null_safe
|
||||
import 'package:convert/convert.dart';
|
||||
import 'package:moor/moor.dart';
|
||||
|
||||
part 'custom_type.dart';
|
||||
part 'type_system.dart';
|
||||
|
||||
const _deprecated =
|
||||
Deprecated('Types will be removed in moor 5, use the methods on '
|
||||
'SqlTypeSystem instead.');
|
||||
|
||||
/// A type that can be mapped from Dart to sql. The generic type parameter [T]
|
||||
/// denotes the resolved dart type.
|
||||
@_deprecated
|
||||
abstract class SqlType<T> {
|
||||
/// Constant constructor so that subclasses can be constant
|
||||
const SqlType();
|
||||
|
@ -30,6 +34,7 @@ abstract class SqlType<T> {
|
|||
|
||||
/// A mapper for boolean values in sql. Booleans are represented as integers,
|
||||
/// where 0 means false and any other value means true.
|
||||
@_deprecated
|
||||
class BoolType extends SqlType<bool> {
|
||||
/// Constant constructor used by the type system
|
||||
const BoolType();
|
||||
|
@ -63,6 +68,7 @@ class BoolType extends SqlType<bool> {
|
|||
}
|
||||
|
||||
/// Mapper for string values in sql.
|
||||
@_deprecated
|
||||
class StringType extends SqlType<String> {
|
||||
/// Constant constructor used by the type system
|
||||
const StringType();
|
||||
|
@ -91,6 +97,7 @@ class StringType extends SqlType<String> {
|
|||
}
|
||||
|
||||
/// Maps [int] values from and to sql
|
||||
@_deprecated
|
||||
class IntType extends SqlType<int> {
|
||||
/// Constant constructor used by the type system
|
||||
const IntType();
|
||||
|
@ -114,6 +121,7 @@ class IntType extends SqlType<int> {
|
|||
}
|
||||
|
||||
/// Maps [DateTime] values from and to sql
|
||||
@_deprecated
|
||||
class DateTimeType extends SqlType<DateTime> {
|
||||
/// Constant constructor used by the type system
|
||||
const DateTimeType();
|
||||
|
@ -147,6 +155,7 @@ class DateTimeType extends SqlType<DateTime> {
|
|||
}
|
||||
|
||||
/// Maps [Uint8List] values from and to sql
|
||||
@_deprecated
|
||||
class BlobType extends SqlType<Uint8List> {
|
||||
/// Constant constructor used by the type system
|
||||
const BlobType();
|
||||
|
@ -172,6 +181,7 @@ class BlobType extends SqlType<Uint8List> {
|
|||
}
|
||||
|
||||
/// Maps [double] values from and to sql
|
||||
@_deprecated
|
||||
class RealType extends SqlType<double> {
|
||||
/// Constant constructor used by the type system
|
||||
const RealType();
|
||||
|
|
|
@ -31,6 +31,7 @@ class SqlTypeSystem {
|
|||
|
||||
/// Returns the appropriate sql type for the dart type provided as the
|
||||
/// generic parameter.
|
||||
@Deprecated('Use mapToVariable or a mapFromSql method instead')
|
||||
SqlType<T> forDartType<T>() {
|
||||
return types.singleWhere((t) => t is SqlType<T>) as SqlType<T>;
|
||||
}
|
||||
|
@ -46,4 +47,27 @@ class SqlTypeSystem {
|
|||
|
||||
return dart;
|
||||
}
|
||||
|
||||
/// Maps a Dart object to a SQL constant representing the same value.
|
||||
static String mapToSqlConstant(Object? dart) {
|
||||
if (dart == null) return 'NULL';
|
||||
|
||||
// todo: Inline and remove types in the next major moor version
|
||||
if (dart is bool) {
|
||||
return const BoolType().mapToSqlConstant(dart);
|
||||
} else if (dart is String) {
|
||||
return const StringType().mapToSqlConstant(dart);
|
||||
} else if (dart is int) {
|
||||
return const IntType().mapToSqlConstant(dart);
|
||||
} else if (dart is DateTime) {
|
||||
return const DateTimeType().mapToSqlConstant(dart);
|
||||
} else if (dart is Uint8List) {
|
||||
return const BlobType().mapToSqlConstant(dart);
|
||||
} else if (dart is double) {
|
||||
return const RealType().mapToSqlConstant(dart);
|
||||
}
|
||||
|
||||
throw ArgumentError.value(dart, 'dart',
|
||||
'Must be null, bool, String, int, DateTime, Uint8List or double');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,17 +20,15 @@ class Config extends DataClass implements Insertable<Config> {
|
|||
factory Config.fromData(Map<String, dynamic> data, GeneratedDatabase db,
|
||||
{String? prefix}) {
|
||||
final effectivePrefix = prefix ?? '';
|
||||
final stringType = db.typeSystem.forDartType<String>();
|
||||
final intType = db.typeSystem.forDartType<int>();
|
||||
return Config(
|
||||
configKey: stringType
|
||||
configKey: const StringType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}config_key'])!,
|
||||
configValue: stringType
|
||||
configValue: const StringType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}config_value']),
|
||||
syncState: ConfigTable.$converter0.mapToDart(intType
|
||||
syncState: ConfigTable.$converter0.mapToDart(const IntType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}sync_state'])),
|
||||
syncStateImplicit: ConfigTable.$converter1.mapToDart(
|
||||
intType.mapFromDatabaseResponse(
|
||||
syncStateImplicit: ConfigTable.$converter1.mapToDart(const IntType()
|
||||
.mapFromDatabaseResponse(
|
||||
data['${effectivePrefix}sync_state_implicit'])),
|
||||
);
|
||||
}
|
||||
|
@ -303,11 +301,10 @@ class WithDefault extends DataClass implements Insertable<WithDefault> {
|
|||
factory WithDefault.fromData(Map<String, dynamic> data, GeneratedDatabase db,
|
||||
{String? prefix}) {
|
||||
final effectivePrefix = prefix ?? '';
|
||||
final stringType = db.typeSystem.forDartType<String>();
|
||||
final intType = db.typeSystem.forDartType<int>();
|
||||
return WithDefault(
|
||||
a: stringType.mapFromDatabaseResponse(data['${effectivePrefix}a']),
|
||||
b: intType.mapFromDatabaseResponse(data['${effectivePrefix}b']),
|
||||
a: const StringType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}a']),
|
||||
b: const IntType().mapFromDatabaseResponse(data['${effectivePrefix}b']),
|
||||
);
|
||||
}
|
||||
@override
|
||||
|
@ -489,9 +486,8 @@ class NoId extends DataClass implements Insertable<NoId> {
|
|||
factory NoId.fromData(Map<String, dynamic> data, GeneratedDatabase db,
|
||||
{String? prefix}) {
|
||||
final effectivePrefix = prefix ?? '';
|
||||
final uint8ListType = db.typeSystem.forDartType<Uint8List>();
|
||||
return NoId(
|
||||
payload: uint8ListType
|
||||
payload: const BlobType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}payload'])!,
|
||||
);
|
||||
}
|
||||
|
@ -645,13 +641,11 @@ class WithConstraint extends DataClass implements Insertable<WithConstraint> {
|
|||
Map<String, dynamic> data, GeneratedDatabase db,
|
||||
{String? prefix}) {
|
||||
final effectivePrefix = prefix ?? '';
|
||||
final stringType = db.typeSystem.forDartType<String>();
|
||||
final intType = db.typeSystem.forDartType<int>();
|
||||
final doubleType = db.typeSystem.forDartType<double>();
|
||||
return WithConstraint(
|
||||
a: stringType.mapFromDatabaseResponse(data['${effectivePrefix}a']),
|
||||
b: intType.mapFromDatabaseResponse(data['${effectivePrefix}b'])!,
|
||||
c: doubleType.mapFromDatabaseResponse(data['${effectivePrefix}c']),
|
||||
a: const StringType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}a']),
|
||||
b: const IntType().mapFromDatabaseResponse(data['${effectivePrefix}b'])!,
|
||||
c: const RealType().mapFromDatabaseResponse(data['${effectivePrefix}c']),
|
||||
);
|
||||
}
|
||||
@override
|
||||
|
@ -871,18 +865,14 @@ class MytableData extends DataClass implements Insertable<MytableData> {
|
|||
factory MytableData.fromData(Map<String, dynamic> data, GeneratedDatabase db,
|
||||
{String? prefix}) {
|
||||
final effectivePrefix = prefix ?? '';
|
||||
final intType = db.typeSystem.forDartType<int>();
|
||||
final stringType = db.typeSystem.forDartType<String>();
|
||||
final boolType = db.typeSystem.forDartType<bool>();
|
||||
final dateTimeType = db.typeSystem.forDartType<DateTime>();
|
||||
return MytableData(
|
||||
someid:
|
||||
intType.mapFromDatabaseResponse(data['${effectivePrefix}someid'])!,
|
||||
sometext: stringType
|
||||
someid: const IntType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}someid'])!,
|
||||
sometext: const StringType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}sometext']),
|
||||
isInserting: boolType
|
||||
isInserting: const BoolType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}is_inserting']),
|
||||
somedate: dateTimeType
|
||||
somedate: const DateTimeType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}somedate']),
|
||||
);
|
||||
}
|
||||
|
@ -1150,13 +1140,13 @@ class EMail extends DataClass implements Insertable<EMail> {
|
|||
factory EMail.fromData(Map<String, dynamic> data, GeneratedDatabase db,
|
||||
{String? prefix}) {
|
||||
final effectivePrefix = prefix ?? '';
|
||||
final stringType = db.typeSystem.forDartType<String>();
|
||||
return EMail(
|
||||
sender:
|
||||
stringType.mapFromDatabaseResponse(data['${effectivePrefix}sender'])!,
|
||||
title:
|
||||
stringType.mapFromDatabaseResponse(data['${effectivePrefix}title'])!,
|
||||
body: stringType.mapFromDatabaseResponse(data['${effectivePrefix}body'])!,
|
||||
sender: const StringType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}sender'])!,
|
||||
title: const StringType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}title'])!,
|
||||
body: const StringType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}body'])!,
|
||||
);
|
||||
}
|
||||
@override
|
||||
|
@ -1375,13 +1365,11 @@ class WeirdData extends DataClass implements Insertable<WeirdData> {
|
|||
factory WeirdData.fromData(Map<String, dynamic> data, GeneratedDatabase db,
|
||||
{String? prefix}) {
|
||||
final effectivePrefix = prefix ?? '';
|
||||
final intType = db.typeSystem.forDartType<int>();
|
||||
final stringType = db.typeSystem.forDartType<String>();
|
||||
return WeirdData(
|
||||
sqlClass:
|
||||
intType.mapFromDatabaseResponse(data['${effectivePrefix}class'])!,
|
||||
textColumn:
|
||||
stringType.mapFromDatabaseResponse(data['${effectivePrefix}text'])!,
|
||||
sqlClass: const IntType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}class'])!,
|
||||
textColumn: const StringType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}text'])!,
|
||||
);
|
||||
}
|
||||
@override
|
||||
|
|
|
@ -22,19 +22,17 @@ class TodoEntry extends DataClass implements Insertable<TodoEntry> {
|
|||
factory TodoEntry.fromData(Map<String, dynamic> data, GeneratedDatabase db,
|
||||
{String? prefix}) {
|
||||
final effectivePrefix = prefix ?? '';
|
||||
final intType = db.typeSystem.forDartType<int>();
|
||||
final stringType = db.typeSystem.forDartType<String>();
|
||||
final dateTimeType = db.typeSystem.forDartType<DateTime>();
|
||||
return TodoEntry(
|
||||
id: intType.mapFromDatabaseResponse(data['${effectivePrefix}id'])!,
|
||||
title:
|
||||
stringType.mapFromDatabaseResponse(data['${effectivePrefix}title']),
|
||||
content: stringType
|
||||
id: const IntType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}id'])!,
|
||||
title: const StringType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}title']),
|
||||
content: const StringType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}content'])!,
|
||||
targetDate: dateTimeType
|
||||
targetDate: const DateTimeType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}target_date']),
|
||||
category:
|
||||
intType.mapFromDatabaseResponse(data['${effectivePrefix}category']),
|
||||
category: const IntType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}category']),
|
||||
);
|
||||
}
|
||||
@override
|
||||
|
@ -342,14 +340,13 @@ class Category extends DataClass implements Insertable<Category> {
|
|||
factory Category.fromData(Map<String, dynamic> data, GeneratedDatabase db,
|
||||
{String? prefix}) {
|
||||
final effectivePrefix = prefix ?? '';
|
||||
final intType = db.typeSystem.forDartType<int>();
|
||||
final stringType = db.typeSystem.forDartType<String>();
|
||||
return Category(
|
||||
id: intType.mapFromDatabaseResponse(data['${effectivePrefix}id'])!,
|
||||
description:
|
||||
stringType.mapFromDatabaseResponse(data['${effectivePrefix}desc'])!,
|
||||
priority: $CategoriesTable.$converter0.mapToDart(
|
||||
intType.mapFromDatabaseResponse(data['${effectivePrefix}priority']))!,
|
||||
id: const IntType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}id'])!,
|
||||
description: const StringType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}desc'])!,
|
||||
priority: $CategoriesTable.$converter0.mapToDart(const IntType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}priority']))!,
|
||||
);
|
||||
}
|
||||
@override
|
||||
|
@ -577,19 +574,16 @@ class User extends DataClass implements Insertable<User> {
|
|||
factory User.fromData(Map<String, dynamic> data, GeneratedDatabase db,
|
||||
{String? prefix}) {
|
||||
final effectivePrefix = prefix ?? '';
|
||||
final intType = db.typeSystem.forDartType<int>();
|
||||
final stringType = db.typeSystem.forDartType<String>();
|
||||
final boolType = db.typeSystem.forDartType<bool>();
|
||||
final uint8ListType = db.typeSystem.forDartType<Uint8List>();
|
||||
final dateTimeType = db.typeSystem.forDartType<DateTime>();
|
||||
return User(
|
||||
id: intType.mapFromDatabaseResponse(data['${effectivePrefix}id'])!,
|
||||
name: stringType.mapFromDatabaseResponse(data['${effectivePrefix}name'])!,
|
||||
isAwesome: boolType
|
||||
id: const IntType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}id'])!,
|
||||
name: const StringType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}name'])!,
|
||||
isAwesome: const BoolType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}is_awesome'])!,
|
||||
profilePicture: uint8ListType
|
||||
profilePicture: const BlobType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}profile_picture'])!,
|
||||
creationTime: dateTimeType
|
||||
creationTime: const DateTimeType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}creation_time'])!,
|
||||
);
|
||||
}
|
||||
|
@ -884,10 +878,11 @@ class SharedTodo extends DataClass implements Insertable<SharedTodo> {
|
|||
factory SharedTodo.fromData(Map<String, dynamic> data, GeneratedDatabase db,
|
||||
{String? prefix}) {
|
||||
final effectivePrefix = prefix ?? '';
|
||||
final intType = db.typeSystem.forDartType<int>();
|
||||
return SharedTodo(
|
||||
todo: intType.mapFromDatabaseResponse(data['${effectivePrefix}todo'])!,
|
||||
user: intType.mapFromDatabaseResponse(data['${effectivePrefix}user'])!,
|
||||
todo: const IntType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}todo'])!,
|
||||
user: const IntType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}user'])!,
|
||||
);
|
||||
}
|
||||
@override
|
||||
|
@ -1210,14 +1205,12 @@ class $TableWithoutPKTable extends TableWithoutPK
|
|||
@override
|
||||
CustomRowClass map(Map<String, dynamic> data, {String? tablePrefix}) {
|
||||
final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : null;
|
||||
final intType = _db.typeSystem.forDartType<int>();
|
||||
final doubleType = _db.typeSystem.forDartType<double>();
|
||||
final stringType = _db.typeSystem.forDartType<String>();
|
||||
return CustomRowClass(
|
||||
intType
|
||||
const IntType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}not_really_an_id'])!,
|
||||
doubleType.mapFromDatabaseResponse(data['${effectivePrefix}some_float'])!,
|
||||
custom: $TableWithoutPKTable.$converter0.mapToDart(stringType
|
||||
const RealType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}some_float'])!,
|
||||
custom: $TableWithoutPKTable.$converter0.mapToDart(const StringType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}custom']))!,
|
||||
);
|
||||
}
|
||||
|
@ -1237,9 +1230,9 @@ class PureDefault extends DataClass implements Insertable<PureDefault> {
|
|||
factory PureDefault.fromData(Map<String, dynamic> data, GeneratedDatabase db,
|
||||
{String? prefix}) {
|
||||
final effectivePrefix = prefix ?? '';
|
||||
final stringType = db.typeSystem.forDartType<String>();
|
||||
return PureDefault(
|
||||
txt: stringType.mapFromDatabaseResponse(data['${effectivePrefix}insert']),
|
||||
txt: const StringType()
|
||||
.mapFromDatabaseResponse(data['${effectivePrefix}insert']),
|
||||
);
|
||||
}
|
||||
@override
|
||||
|
|
|
@ -3,7 +3,6 @@ import 'package:moor_generator/moor_generator.dart';
|
|||
import 'package:moor_generator/src/utils/string_escaper.dart';
|
||||
import 'package:moor_generator/src/writer/utils/override_toString.dart';
|
||||
import 'package:moor_generator/writer.dart';
|
||||
import 'package:recase/recase.dart';
|
||||
|
||||
class DataClassWriter {
|
||||
final MoorTable table;
|
||||
|
@ -84,7 +83,6 @@ class DataClassWriter {
|
|||
table,
|
||||
scope.generationOptions,
|
||||
);
|
||||
writer.prepareVariables(_buffer);
|
||||
|
||||
// finally, the mighty constructor invocation:
|
||||
_buffer.write('return $dataClassName');
|
||||
|
@ -293,30 +291,14 @@ class RowMappingWriter {
|
|||
|
||||
final String dbName;
|
||||
|
||||
final Map<String, String> _dartTypeToSqlType = {};
|
||||
Iterable<MoorColumn> get _columns => positional.followedBy(named.keys);
|
||||
|
||||
RowMappingWriter(this.positional, this.named, this.table, this.options,
|
||||
{this.dbName = 'db'});
|
||||
|
||||
void prepareVariables(StringBuffer buffer) {
|
||||
final types = _columns.map((e) => e.variableTypeName).toSet();
|
||||
for (final usedType in types) {
|
||||
// final intType = db.typeSystem.forDartType<int>();
|
||||
final resolver = '${ReCase(usedType).camelCase}Type';
|
||||
_dartTypeToSqlType[usedType] = resolver;
|
||||
|
||||
buffer.write(
|
||||
'final $resolver = $dbName.typeSystem.forDartType<$usedType>();\n');
|
||||
}
|
||||
}
|
||||
|
||||
void writeArguments(StringBuffer buffer) {
|
||||
String readAndMap(MoorColumn column) {
|
||||
final resolver = _dartTypeToSqlType[column.variableTypeName];
|
||||
final columnName = "'\${effectivePrefix}${column.name.name}'";
|
||||
|
||||
var loadType = '$resolver.mapFromDatabaseResponse(data[$columnName])';
|
||||
final rawData = "data['\${effectivePrefix}${column.name.name}']";
|
||||
final sqlType = 'const ${sqlTypes[column.type]}()';
|
||||
var loadType = '$sqlType.mapFromDatabaseResponse($rawData)';
|
||||
|
||||
// run the loaded expression though the custom converter for the final
|
||||
// result.
|
||||
|
|
|
@ -149,7 +149,6 @@ class TableWriter {
|
|||
scope.generationOptions,
|
||||
dbName: '_db',
|
||||
);
|
||||
writer.prepareVariables(_buffer);
|
||||
|
||||
final classElement = info.targetClass;
|
||||
final ctor = info.constructor;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue