Use aliases in the operations

This commit is contained in:
Simon Binder 2019-03-30 19:21:44 +01:00
parent df2a681410
commit 9ca52d7f87
No known key found for this signature in database
GPG Key ID: B807FDF954BA00CF
6 changed files with 407 additions and 151 deletions

View File

@ -10,12 +10,15 @@ class Category {
final int id;
final String description;
Category({this.id, this.description});
factory Category.fromData(Map<String, dynamic> data, GeneratedDatabase db) {
factory Category.fromData(Map<String, dynamic> data, GeneratedDatabase db,
{String alias}) {
final effectivePrefix = alias != null ? '$alias.' : '';
final intType = db.typeSystem.forDartType<int>();
final stringType = db.typeSystem.forDartType<String>();
return Category(
id: intType.mapFromDatabaseResponse(data['id']),
description: stringType.mapFromDatabaseResponse(data['description']),
id: intType.mapFromDatabaseResponse(data['${effectivePrefix}id']),
description: stringType
.mapFromDatabaseResponse(data['${effectivePrefix}description']),
);
}
factory Category.fromJson(Map<String, dynamic> json) {
@ -59,14 +62,26 @@ class $CategoriesTable extends Categories
$CategoriesTable(this._db, [this._alias]);
GeneratedIntColumn _id;
@override
GeneratedIntColumn get id =>
_id ??= GeneratedIntColumn('id', false, hasAutoIncrement: true);
GeneratedIntColumn get id => _id ??= _constructId();
GeneratedIntColumn _constructId() {
var cName = 'id';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedIntColumn('id', false, hasAutoIncrement: true);
}
GeneratedTextColumn _description;
@override
GeneratedTextColumn get description => _description ??= GeneratedTextColumn(
'description',
true,
);
GeneratedTextColumn get description =>
_description ??= _constructDescription();
GeneratedTextColumn _constructDescription() {
var cName = 'description';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedTextColumn(
'description',
true,
);
}
@override
List<GeneratedColumn> get $columns => [id, description];
@override
@ -108,14 +123,19 @@ class Recipe {
final String instructions;
final int category;
Recipe({this.id, this.title, this.instructions, this.category});
factory Recipe.fromData(Map<String, dynamic> data, GeneratedDatabase db) {
factory Recipe.fromData(Map<String, dynamic> data, GeneratedDatabase db,
{String alias}) {
final effectivePrefix = alias != null ? '$alias.' : '';
final intType = db.typeSystem.forDartType<int>();
final stringType = db.typeSystem.forDartType<String>();
return Recipe(
id: intType.mapFromDatabaseResponse(data['id']),
title: stringType.mapFromDatabaseResponse(data['title']),
instructions: stringType.mapFromDatabaseResponse(data['instructions']),
category: intType.mapFromDatabaseResponse(data['category']),
id: intType.mapFromDatabaseResponse(data['${effectivePrefix}id']),
title:
stringType.mapFromDatabaseResponse(data['${effectivePrefix}title']),
instructions: stringType
.mapFromDatabaseResponse(data['${effectivePrefix}instructions']),
category:
intType.mapFromDatabaseResponse(data['${effectivePrefix}category']),
);
}
factory Recipe.fromJson(Map<String, dynamic> json) {
@ -174,24 +194,47 @@ class $RecipesTable extends Recipes implements TableInfo<Recipes, Recipe> {
$RecipesTable(this._db, [this._alias]);
GeneratedIntColumn _id;
@override
GeneratedIntColumn get id =>
_id ??= GeneratedIntColumn('id', false, hasAutoIncrement: true);
GeneratedIntColumn get id => _id ??= _constructId();
GeneratedIntColumn _constructId() {
var cName = 'id';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedIntColumn('id', false, hasAutoIncrement: true);
}
GeneratedTextColumn _title;
@override
GeneratedTextColumn get title =>
_title ??= GeneratedTextColumn('title', false, maxTextLength: 16);
GeneratedTextColumn get title => _title ??= _constructTitle();
GeneratedTextColumn _constructTitle() {
var cName = 'title';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedTextColumn('title', false, maxTextLength: 16);
}
GeneratedTextColumn _instructions;
@override
GeneratedTextColumn get instructions => _instructions ??= GeneratedTextColumn(
'instructions',
false,
);
GeneratedTextColumn get instructions =>
_instructions ??= _constructInstructions();
GeneratedTextColumn _constructInstructions() {
var cName = 'instructions';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedTextColumn(
'instructions',
false,
);
}
GeneratedIntColumn _category;
@override
GeneratedIntColumn get category => _category ??= GeneratedIntColumn(
'category',
true,
);
GeneratedIntColumn get category => _category ??= _constructCategory();
GeneratedIntColumn _constructCategory() {
var cName = 'category';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedIntColumn(
'category',
true,
);
}
@override
List<GeneratedColumn> get $columns => [id, title, instructions, category];
@override
@ -240,13 +283,16 @@ class Ingredient {
final String name;
final int caloriesPer100g;
Ingredient({this.id, this.name, this.caloriesPer100g});
factory Ingredient.fromData(Map<String, dynamic> data, GeneratedDatabase db) {
factory Ingredient.fromData(Map<String, dynamic> data, GeneratedDatabase db,
{String alias}) {
final effectivePrefix = alias != null ? '$alias.' : '';
final intType = db.typeSystem.forDartType<int>();
final stringType = db.typeSystem.forDartType<String>();
return Ingredient(
id: intType.mapFromDatabaseResponse(data['id']),
name: stringType.mapFromDatabaseResponse(data['name']),
caloriesPer100g: intType.mapFromDatabaseResponse(data['calories']),
id: intType.mapFromDatabaseResponse(data['${effectivePrefix}id']),
name: stringType.mapFromDatabaseResponse(data['${effectivePrefix}name']),
caloriesPer100g:
intType.mapFromDatabaseResponse(data['${effectivePrefix}calories']),
);
}
factory Ingredient.fromJson(Map<String, dynamic> json) {
@ -298,21 +344,38 @@ class $IngredientsTable extends Ingredients
$IngredientsTable(this._db, [this._alias]);
GeneratedIntColumn _id;
@override
GeneratedIntColumn get id =>
_id ??= GeneratedIntColumn('id', false, hasAutoIncrement: true);
GeneratedIntColumn get id => _id ??= _constructId();
GeneratedIntColumn _constructId() {
var cName = 'id';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedIntColumn('id', false, hasAutoIncrement: true);
}
GeneratedTextColumn _name;
@override
GeneratedTextColumn get name => _name ??= GeneratedTextColumn(
'name',
false,
);
GeneratedTextColumn get name => _name ??= _constructName();
GeneratedTextColumn _constructName() {
var cName = 'name';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedTextColumn(
'name',
false,
);
}
GeneratedIntColumn _caloriesPer100g;
@override
GeneratedIntColumn get caloriesPer100g =>
_caloriesPer100g ??= GeneratedIntColumn(
'calories',
false,
);
_caloriesPer100g ??= _constructCaloriesPer100g();
GeneratedIntColumn _constructCaloriesPer100g() {
var cName = 'calories';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedIntColumn(
'calories',
false,
);
}
@override
List<GeneratedColumn> get $columns => [id, name, caloriesPer100g];
@override
@ -358,12 +421,16 @@ class IngredientInRecipe {
final int amountInGrams;
IngredientInRecipe({this.recipe, this.ingredient, this.amountInGrams});
factory IngredientInRecipe.fromData(
Map<String, dynamic> data, GeneratedDatabase db) {
Map<String, dynamic> data, GeneratedDatabase db,
{String alias}) {
final effectivePrefix = alias != null ? '$alias.' : '';
final intType = db.typeSystem.forDartType<int>();
return IngredientInRecipe(
recipe: intType.mapFromDatabaseResponse(data['recipe']),
ingredient: intType.mapFromDatabaseResponse(data['ingredient']),
amountInGrams: intType.mapFromDatabaseResponse(data['amount']),
recipe: intType.mapFromDatabaseResponse(data['${effectivePrefix}recipe']),
ingredient:
intType.mapFromDatabaseResponse(data['${effectivePrefix}ingredient']),
amountInGrams:
intType.mapFromDatabaseResponse(data['${effectivePrefix}amount']),
);
}
factory IngredientInRecipe.fromJson(Map<String, dynamic> json) {
@ -418,22 +485,41 @@ class $IngredientInRecipesTable extends IngredientInRecipes
$IngredientInRecipesTable(this._db, [this._alias]);
GeneratedIntColumn _recipe;
@override
GeneratedIntColumn get recipe => _recipe ??= GeneratedIntColumn(
'recipe',
false,
);
GeneratedIntColumn get recipe => _recipe ??= _constructRecipe();
GeneratedIntColumn _constructRecipe() {
var cName = 'recipe';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedIntColumn(
'recipe',
false,
);
}
GeneratedIntColumn _ingredient;
@override
GeneratedIntColumn get ingredient => _ingredient ??= GeneratedIntColumn(
'ingredient',
false,
);
GeneratedIntColumn get ingredient => _ingredient ??= _constructIngredient();
GeneratedIntColumn _constructIngredient() {
var cName = 'ingredient';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedIntColumn(
'ingredient',
false,
);
}
GeneratedIntColumn _amountInGrams;
@override
GeneratedIntColumn get amountInGrams => _amountInGrams ??= GeneratedIntColumn(
'amount',
false,
);
GeneratedIntColumn get amountInGrams =>
_amountInGrams ??= _constructAmountInGrams();
GeneratedIntColumn _constructAmountInGrams() {
var cName = 'amount';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedIntColumn(
'amount',
false,
);
}
@override
List<GeneratedColumn> get $columns => [recipe, ingredient, amountInGrams];
@override

View File

@ -14,16 +14,22 @@ class TodoEntry {
final int category;
TodoEntry(
{this.id, this.title, this.content, this.targetDate, this.category});
factory TodoEntry.fromData(Map<String, dynamic> data, GeneratedDatabase db) {
factory TodoEntry.fromData(Map<String, dynamic> data, GeneratedDatabase db,
{String alias}) {
final effectivePrefix = alias != null ? '$alias.' : '';
final intType = db.typeSystem.forDartType<int>();
final stringType = db.typeSystem.forDartType<String>();
final dateTimeType = db.typeSystem.forDartType<DateTime>();
return TodoEntry(
id: intType.mapFromDatabaseResponse(data['id']),
title: stringType.mapFromDatabaseResponse(data['title']),
content: stringType.mapFromDatabaseResponse(data['content']),
targetDate: dateTimeType.mapFromDatabaseResponse(data['target_date']),
category: intType.mapFromDatabaseResponse(data['category']),
id: intType.mapFromDatabaseResponse(data['${effectivePrefix}id']),
title:
stringType.mapFromDatabaseResponse(data['${effectivePrefix}title']),
content:
stringType.mapFromDatabaseResponse(data['${effectivePrefix}content']),
targetDate: dateTimeType
.mapFromDatabaseResponse(data['${effectivePrefix}target_date']),
category:
intType.mapFromDatabaseResponse(data['${effectivePrefix}category']),
);
}
factory TodoEntry.fromJson(Map<String, dynamic> json) {
@ -94,31 +100,60 @@ class $TodosTableTable extends TodosTable
$TodosTableTable(this._db, [this._alias]);
GeneratedIntColumn _id;
@override
GeneratedIntColumn get id =>
_id ??= GeneratedIntColumn('id', false, hasAutoIncrement: true);
GeneratedIntColumn get id => _id ??= _constructId();
GeneratedIntColumn _constructId() {
var cName = 'id';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedIntColumn('id', false, hasAutoIncrement: true);
}
GeneratedTextColumn _title;
@override
GeneratedTextColumn get title => _title ??=
GeneratedTextColumn('title', true, minTextLength: 4, maxTextLength: 16);
GeneratedTextColumn get title => _title ??= _constructTitle();
GeneratedTextColumn _constructTitle() {
var cName = 'title';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedTextColumn('title', true,
minTextLength: 4, maxTextLength: 16);
}
GeneratedTextColumn _content;
@override
GeneratedTextColumn get content => _content ??= GeneratedTextColumn(
'content',
false,
);
GeneratedTextColumn get content => _content ??= _constructContent();
GeneratedTextColumn _constructContent() {
var cName = 'content';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedTextColumn(
'content',
false,
);
}
GeneratedDateTimeColumn _targetDate;
@override
GeneratedDateTimeColumn get targetDate =>
_targetDate ??= GeneratedDateTimeColumn(
'target_date',
true,
);
_targetDate ??= _constructTargetDate();
GeneratedDateTimeColumn _constructTargetDate() {
var cName = 'target_date';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedDateTimeColumn(
'target_date',
true,
);
}
GeneratedIntColumn _category;
@override
GeneratedIntColumn get category => _category ??= GeneratedIntColumn(
'category',
true,
);
GeneratedIntColumn get category => _category ??= _constructCategory();
GeneratedIntColumn _constructCategory() {
var cName = 'category';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedIntColumn(
'category',
true,
);
}
@override
List<GeneratedColumn> get $columns =>
[id, title, content, targetDate, category];
@ -171,12 +206,15 @@ class Category {
final int id;
final String description;
Category({this.id, this.description});
factory Category.fromData(Map<String, dynamic> data, GeneratedDatabase db) {
factory Category.fromData(Map<String, dynamic> data, GeneratedDatabase db,
{String alias}) {
final effectivePrefix = alias != null ? '$alias.' : '';
final intType = db.typeSystem.forDartType<int>();
final stringType = db.typeSystem.forDartType<String>();
return Category(
id: intType.mapFromDatabaseResponse(data['id']),
description: stringType.mapFromDatabaseResponse(data['`desc`']),
id: intType.mapFromDatabaseResponse(data['${effectivePrefix}id']),
description:
stringType.mapFromDatabaseResponse(data['${effectivePrefix}`desc`']),
);
}
factory Category.fromJson(Map<String, dynamic> json) {
@ -220,13 +258,24 @@ class $CategoriesTable extends Categories
$CategoriesTable(this._db, [this._alias]);
GeneratedIntColumn _id;
@override
GeneratedIntColumn get id =>
_id ??= GeneratedIntColumn('id', false, hasAutoIncrement: true);
GeneratedIntColumn get id => _id ??= _constructId();
GeneratedIntColumn _constructId() {
var cName = 'id';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedIntColumn('id', false, hasAutoIncrement: true);
}
GeneratedTextColumn _description;
@override
GeneratedTextColumn get description =>
_description ??= GeneratedTextColumn('`desc`', false,
$customConstraints: 'NOT NULL UNIQUE');
_description ??= _constructDescription();
GeneratedTextColumn _constructDescription() {
var cName = '`desc`';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedTextColumn('`desc`', false,
$customConstraints: 'NOT NULL UNIQUE');
}
@override
List<GeneratedColumn> get $columns => [id, description];
@override
@ -268,17 +317,20 @@ class User {
final bool isAwesome;
final Uint8List profilePicture;
User({this.id, this.name, this.isAwesome, this.profilePicture});
factory User.fromData(Map<String, dynamic> data, GeneratedDatabase db) {
factory User.fromData(Map<String, dynamic> data, GeneratedDatabase db,
{String alias}) {
final effectivePrefix = alias != null ? '$alias.' : '';
final intType = db.typeSystem.forDartType<int>();
final stringType = db.typeSystem.forDartType<String>();
final boolType = db.typeSystem.forDartType<bool>();
final uint8ListType = db.typeSystem.forDartType<Uint8List>();
return User(
id: intType.mapFromDatabaseResponse(data['id']),
name: stringType.mapFromDatabaseResponse(data['name']),
isAwesome: boolType.mapFromDatabaseResponse(data['is_awesome']),
profilePicture:
uint8ListType.mapFromDatabaseResponse(data['profile_picture']),
id: intType.mapFromDatabaseResponse(data['${effectivePrefix}id']),
name: stringType.mapFromDatabaseResponse(data['${effectivePrefix}name']),
isAwesome: boolType
.mapFromDatabaseResponse(data['${effectivePrefix}is_awesome']),
profilePicture: uint8ListType
.mapFromDatabaseResponse(data['${effectivePrefix}profile_picture']),
);
}
factory User.fromJson(Map<String, dynamic> json) {
@ -337,25 +389,48 @@ class $UsersTable extends Users implements TableInfo<Users, User> {
$UsersTable(this._db, [this._alias]);
GeneratedIntColumn _id;
@override
GeneratedIntColumn get id =>
_id ??= GeneratedIntColumn('id', false, hasAutoIncrement: true);
GeneratedIntColumn get id => _id ??= _constructId();
GeneratedIntColumn _constructId() {
var cName = 'id';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedIntColumn('id', false, hasAutoIncrement: true);
}
GeneratedTextColumn _name;
@override
GeneratedTextColumn get name => _name ??=
GeneratedTextColumn('name', false, minTextLength: 6, maxTextLength: 32);
GeneratedTextColumn get name => _name ??= _constructName();
GeneratedTextColumn _constructName() {
var cName = 'name';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedTextColumn('name', false,
minTextLength: 6, maxTextLength: 32);
}
GeneratedBoolColumn _isAwesome;
@override
GeneratedBoolColumn get isAwesome => _isAwesome ??= GeneratedBoolColumn(
'is_awesome',
false,
);
GeneratedBoolColumn get isAwesome => _isAwesome ??= _constructIsAwesome();
GeneratedBoolColumn _constructIsAwesome() {
var cName = 'is_awesome';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedBoolColumn(
'is_awesome',
false,
);
}
GeneratedBlobColumn _profilePicture;
@override
GeneratedBlobColumn get profilePicture =>
_profilePicture ??= GeneratedBlobColumn(
'profile_picture',
false,
);
_profilePicture ??= _constructProfilePicture();
GeneratedBlobColumn _constructProfilePicture() {
var cName = 'profile_picture';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedBlobColumn(
'profile_picture',
false,
);
}
@override
List<GeneratedColumn> get $columns => [id, name, isAwesome, profilePicture];
@override
@ -403,11 +478,13 @@ class SharedTodo {
final int todo;
final int user;
SharedTodo({this.todo, this.user});
factory SharedTodo.fromData(Map<String, dynamic> data, GeneratedDatabase db) {
factory SharedTodo.fromData(Map<String, dynamic> data, GeneratedDatabase db,
{String alias}) {
final effectivePrefix = alias != null ? '$alias.' : '';
final intType = db.typeSystem.forDartType<int>();
return SharedTodo(
todo: intType.mapFromDatabaseResponse(data['todo']),
user: intType.mapFromDatabaseResponse(data['user']),
todo: intType.mapFromDatabaseResponse(data['${effectivePrefix}todo']),
user: intType.mapFromDatabaseResponse(data['${effectivePrefix}user']),
);
}
factory SharedTodo.fromJson(Map<String, dynamic> json) {
@ -451,16 +528,28 @@ class $SharedTodosTable extends SharedTodos
$SharedTodosTable(this._db, [this._alias]);
GeneratedIntColumn _todo;
@override
GeneratedIntColumn get todo => _todo ??= GeneratedIntColumn(
'todo',
false,
);
GeneratedIntColumn get todo => _todo ??= _constructTodo();
GeneratedIntColumn _constructTodo() {
var cName = 'todo';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedIntColumn(
'todo',
false,
);
}
GeneratedIntColumn _user;
@override
GeneratedIntColumn get user => _user ??= GeneratedIntColumn(
'user',
false,
);
GeneratedIntColumn get user => _user ??= _constructUser();
GeneratedIntColumn _constructUser() {
var cName = 'user';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedIntColumn(
'user',
false,
);
}
@override
List<GeneratedColumn> get $columns => [todo, user];
@override

View File

@ -12,15 +12,20 @@ class TodoEntry {
final DateTime targetDate;
final int category;
TodoEntry({this.id, this.content, this.targetDate, this.category});
factory TodoEntry.fromData(Map<String, dynamic> data, GeneratedDatabase db) {
factory TodoEntry.fromData(Map<String, dynamic> data, GeneratedDatabase db,
{String alias}) {
final effectivePrefix = alias != null ? '$alias.' : '';
final intType = db.typeSystem.forDartType<int>();
final stringType = db.typeSystem.forDartType<String>();
final dateTimeType = db.typeSystem.forDartType<DateTime>();
return TodoEntry(
id: intType.mapFromDatabaseResponse(data['id']),
content: stringType.mapFromDatabaseResponse(data['content']),
targetDate: dateTimeType.mapFromDatabaseResponse(data['target_date']),
category: intType.mapFromDatabaseResponse(data['category']),
id: intType.mapFromDatabaseResponse(data['${effectivePrefix}id']),
content:
stringType.mapFromDatabaseResponse(data['${effectivePrefix}content']),
targetDate: dateTimeType
.mapFromDatabaseResponse(data['${effectivePrefix}target_date']),
category:
intType.mapFromDatabaseResponse(data['${effectivePrefix}category']),
);
}
factory TodoEntry.fromJson(Map<String, dynamic> json) {
@ -80,27 +85,50 @@ class $TodosTable extends Todos implements TableInfo<Todos, TodoEntry> {
$TodosTable(this._db, [this._alias]);
GeneratedIntColumn _id;
@override
GeneratedIntColumn get id =>
_id ??= GeneratedIntColumn('id', false, hasAutoIncrement: true);
GeneratedIntColumn get id => _id ??= _constructId();
GeneratedIntColumn _constructId() {
var cName = 'id';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedIntColumn('id', false, hasAutoIncrement: true);
}
GeneratedTextColumn _content;
@override
GeneratedTextColumn get content => _content ??= GeneratedTextColumn(
'content',
false,
);
GeneratedTextColumn get content => _content ??= _constructContent();
GeneratedTextColumn _constructContent() {
var cName = 'content';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedTextColumn(
'content',
false,
);
}
GeneratedDateTimeColumn _targetDate;
@override
GeneratedDateTimeColumn get targetDate =>
_targetDate ??= GeneratedDateTimeColumn(
'target_date',
true,
);
_targetDate ??= _constructTargetDate();
GeneratedDateTimeColumn _constructTargetDate() {
var cName = 'target_date';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedDateTimeColumn(
'target_date',
true,
);
}
GeneratedIntColumn _category;
@override
GeneratedIntColumn get category => _category ??= GeneratedIntColumn(
'category',
true,
);
GeneratedIntColumn get category => _category ??= _constructCategory();
GeneratedIntColumn _constructCategory() {
var cName = 'category';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedIntColumn(
'category',
true,
);
}
@override
List<GeneratedColumn> get $columns => [id, content, targetDate, category];
@override
@ -148,12 +176,15 @@ class Category {
final int id;
final String description;
Category({this.id, this.description});
factory Category.fromData(Map<String, dynamic> data, GeneratedDatabase db) {
factory Category.fromData(Map<String, dynamic> data, GeneratedDatabase db,
{String alias}) {
final effectivePrefix = alias != null ? '$alias.' : '';
final intType = db.typeSystem.forDartType<int>();
final stringType = db.typeSystem.forDartType<String>();
return Category(
id: intType.mapFromDatabaseResponse(data['id']),
description: stringType.mapFromDatabaseResponse(data['`desc`']),
id: intType.mapFromDatabaseResponse(data['${effectivePrefix}id']),
description:
stringType.mapFromDatabaseResponse(data['${effectivePrefix}`desc`']),
);
}
factory Category.fromJson(Map<String, dynamic> json) {
@ -197,14 +228,26 @@ class $CategoriesTable extends Categories
$CategoriesTable(this._db, [this._alias]);
GeneratedIntColumn _id;
@override
GeneratedIntColumn get id =>
_id ??= GeneratedIntColumn('id', false, hasAutoIncrement: true);
GeneratedIntColumn get id => _id ??= _constructId();
GeneratedIntColumn _constructId() {
var cName = 'id';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedIntColumn('id', false, hasAutoIncrement: true);
}
GeneratedTextColumn _description;
@override
GeneratedTextColumn get description => _description ??= GeneratedTextColumn(
'`desc`',
false,
);
GeneratedTextColumn get description =>
_description ??= _constructDescription();
GeneratedTextColumn _constructDescription() {
var cName = '`desc`';
if (_alias != null) cName = '$_alias.$cName';
return GeneratedTextColumn(
'`desc`',
false,
);
}
@override
List<GeneratedColumn> get $columns => [id, description];
@override

View File

@ -67,8 +67,11 @@ class DataClassWriter {
void _writeMappingConstructor(StringBuffer buffer) {
final dataClassName = table.dartTypeName;
buffer.write(
'factory $dataClassName.fromData(Map<String, dynamic> data, GeneratedDatabase db) {\n');
buffer
..write('factory $dataClassName.fromData')
..write('(Map<String, dynamic> data, GeneratedDatabase db, ')
..write('{String alias}) {\n')
..write("final effectivePrefix = alias != null ? '\$alias.' : '';");
final dartTypeToResolver = <String, String>{};
@ -89,8 +92,8 @@ class DataClassWriter {
// id: intType.mapFromDatabaseResponse(data["id])
final getter = column.dartGetterName;
final resolver = dartTypeToResolver[column.dartTypeName];
final typeParser =
'$resolver.mapFromDatabaseResponse(data[\'${column.name.name}\'])';
final columnName = "'\${effectivePrefix}${column.name.name}'";
final typeParser = '$resolver.mapFromDatabaseResponse(data[$columnName])';
buffer.write('$getter: $typeParser,');
}

View File

@ -87,6 +87,7 @@ class TableWriter {
void _writeColumnGetter(StringBuffer buffer, SpecifiedColumn column) {
final isNullable = column.nullable;
final additionalParams = <String, String>{};
final expressionBuffer = StringBuffer();
for (var feature in column.features) {
if (feature is AutoIncrement) {
@ -106,9 +107,12 @@ class TableWriter {
additionalParams['\$customConstraints'] = "'${column.customConstraints}'";
}
// GeneratedIntColumn('sql_name', isNullable, additionalField: true)
final expressionBuffer = StringBuffer()
..write(column.implColumnTypeName)
// Handle aliasing
expressionBuffer
..write("var cName = '${column.name.name}';\n")
..write("if (_alias != null) cName = '\$_alias.\$cName';\n")
// GeneratedIntColumn('sql_name', isNullable, additionalField: true)
..write('return ${column.implColumnTypeName}')
..write('(\'${column.name.name}\', $isNullable, ');
var first = true;
@ -122,9 +126,9 @@ class TableWriter {
expressionBuffer..write(name)..write(': ')..write(value);
});
expressionBuffer.write(')');
expressionBuffer.write(');');
writeMemoizedGetter(
writeMemoizedGetterWithBody(
buffer: buffer,
getterName: column.dartGetterName,
returnType: column.implColumnTypeName,

View File

@ -1,4 +1,5 @@
import 'package:meta/meta.dart';
import 'package:recase/recase.dart';
/// Writes the following dart code into the [buffer]:
/// ```
@ -19,3 +20,33 @@ void writeMemoizedGetter(
}
buffer.write('$returnType get $getterName => _$getterName ??= $code;');
}
/// Writes the following dart code into the [buffer]:
/// ```
/// ReturnType _getterName;
/// ReturnType get getterName => _getterName ??= _constructGetterName();
/// ReturnType _constructGetterName() {
/// code
/// }
/// ```
/// This means that the generated code will also be responsible for writing the
/// return statement and more.
void writeMemoizedGetterWithBody(
{@required StringBuffer buffer,
@required String getterName,
@required String returnType,
@required String code,
bool hasOverride}) {
final constructingMethod = '_construct${ReCase(getterName).pascalCase}';
buffer.write('$returnType _$getterName;\n');
if (hasOverride == true) {
buffer.write('@override\n');
}
buffer
..write('$returnType get $getterName =>')
..write(' _$getterName ??= $constructingMethod();\n')
..write('$returnType $constructingMethod() {\n')
..write(code)
..write('\n}');
}