diff --git a/moor/example/example.g.dart b/moor/example/example.g.dart index b324b10e..c8ad1856 100644 --- a/moor/example/example.g.dart +++ b/moor/example/example.g.dart @@ -10,12 +10,15 @@ class Category { final int id; final String description; Category({this.id, this.description}); - factory Category.fromData(Map data, GeneratedDatabase db) { + factory Category.fromData(Map data, GeneratedDatabase db, + {String alias}) { + final effectivePrefix = alias != null ? '$alias.' : ''; final intType = db.typeSystem.forDartType(); final stringType = db.typeSystem.forDartType(); 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 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 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 data, GeneratedDatabase db) { + factory Recipe.fromData(Map data, GeneratedDatabase db, + {String alias}) { + final effectivePrefix = alias != null ? '$alias.' : ''; final intType = db.typeSystem.forDartType(); final stringType = db.typeSystem.forDartType(); 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 json) { @@ -174,24 +194,47 @@ class $RecipesTable extends Recipes implements TableInfo { $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 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 data, GeneratedDatabase db) { + factory Ingredient.fromData(Map data, GeneratedDatabase db, + {String alias}) { + final effectivePrefix = alias != null ? '$alias.' : ''; final intType = db.typeSystem.forDartType(); final stringType = db.typeSystem.forDartType(); 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 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 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 data, GeneratedDatabase db) { + Map data, GeneratedDatabase db, + {String alias}) { + final effectivePrefix = alias != null ? '$alias.' : ''; final intType = db.typeSystem.forDartType(); 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 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 get $columns => [recipe, ingredient, amountInGrams]; @override diff --git a/moor/test/data/tables/todos.g.dart b/moor/test/data/tables/todos.g.dart index 5c246696..8f622837 100644 --- a/moor/test/data/tables/todos.g.dart +++ b/moor/test/data/tables/todos.g.dart @@ -14,16 +14,22 @@ class TodoEntry { final int category; TodoEntry( {this.id, this.title, this.content, this.targetDate, this.category}); - factory TodoEntry.fromData(Map data, GeneratedDatabase db) { + factory TodoEntry.fromData(Map data, GeneratedDatabase db, + {String alias}) { + final effectivePrefix = alias != null ? '$alias.' : ''; final intType = db.typeSystem.forDartType(); final stringType = db.typeSystem.forDartType(); final dateTimeType = db.typeSystem.forDartType(); 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 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 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 data, GeneratedDatabase db) { + factory Category.fromData(Map data, GeneratedDatabase db, + {String alias}) { + final effectivePrefix = alias != null ? '$alias.' : ''; final intType = db.typeSystem.forDartType(); final stringType = db.typeSystem.forDartType(); 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 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 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 data, GeneratedDatabase db) { + factory User.fromData(Map data, GeneratedDatabase db, + {String alias}) { + final effectivePrefix = alias != null ? '$alias.' : ''; final intType = db.typeSystem.forDartType(); final stringType = db.typeSystem.forDartType(); final boolType = db.typeSystem.forDartType(); final uint8ListType = db.typeSystem.forDartType(); 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 json) { @@ -337,25 +389,48 @@ class $UsersTable extends Users implements TableInfo { $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 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 data, GeneratedDatabase db) { + factory SharedTodo.fromData(Map data, GeneratedDatabase db, + {String alias}) { + final effectivePrefix = alias != null ? '$alias.' : ''; final intType = db.typeSystem.forDartType(); 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 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 get $columns => [todo, user]; @override diff --git a/moor_flutter/example/lib/database/database.g.dart b/moor_flutter/example/lib/database/database.g.dart index e0c64157..b3f1f0ac 100644 --- a/moor_flutter/example/lib/database/database.g.dart +++ b/moor_flutter/example/lib/database/database.g.dart @@ -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 data, GeneratedDatabase db) { + factory TodoEntry.fromData(Map data, GeneratedDatabase db, + {String alias}) { + final effectivePrefix = alias != null ? '$alias.' : ''; final intType = db.typeSystem.forDartType(); final stringType = db.typeSystem.forDartType(); final dateTimeType = db.typeSystem.forDartType(); 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 json) { @@ -80,27 +85,50 @@ class $TodosTable extends Todos implements TableInfo { $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 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 data, GeneratedDatabase db) { + factory Category.fromData(Map data, GeneratedDatabase db, + {String alias}) { + final effectivePrefix = alias != null ? '$alias.' : ''; final intType = db.typeSystem.forDartType(); final stringType = db.typeSystem.forDartType(); 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 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 get $columns => [id, description]; @override diff --git a/moor_generator/lib/src/writer/data_class_writer.dart b/moor_generator/lib/src/writer/data_class_writer.dart index 0f083d81..afa268ec 100644 --- a/moor_generator/lib/src/writer/data_class_writer.dart +++ b/moor_generator/lib/src/writer/data_class_writer.dart @@ -67,8 +67,11 @@ class DataClassWriter { void _writeMappingConstructor(StringBuffer buffer) { final dataClassName = table.dartTypeName; - buffer.write( - 'factory $dataClassName.fromData(Map data, GeneratedDatabase db) {\n'); + buffer + ..write('factory $dataClassName.fromData') + ..write('(Map data, GeneratedDatabase db, ') + ..write('{String alias}) {\n') + ..write("final effectivePrefix = alias != null ? '\$alias.' : '';"); final dartTypeToResolver = {}; @@ -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,'); } diff --git a/moor_generator/lib/src/writer/table_writer.dart b/moor_generator/lib/src/writer/table_writer.dart index df3d1fdc..de67e2d8 100644 --- a/moor_generator/lib/src/writer/table_writer.dart +++ b/moor_generator/lib/src/writer/table_writer.dart @@ -87,6 +87,7 @@ class TableWriter { void _writeColumnGetter(StringBuffer buffer, SpecifiedColumn column) { final isNullable = column.nullable; final additionalParams = {}; + 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, diff --git a/moor_generator/lib/src/writer/utils.dart b/moor_generator/lib/src/writer/utils.dart index 0e3849e5..52c6c529 100644 --- a/moor_generator/lib/src/writer/utils.dart +++ b/moor_generator/lib/src/writer/utils.dart @@ -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}'); +}