diff options
Diffstat (limited to 'lib/models')
-rw-r--r-- | lib/models/data/recipe_data_class.dart | 11 | ||||
-rw-r--r-- | lib/models/data/shoplist_data_class.dart | 1 | ||||
-rw-r--r-- | lib/models/recipe_class.dart | 23 | ||||
-rw-r--r-- | lib/models/recipe_class.g.dart | 991 |
4 files changed, 1006 insertions, 20 deletions
diff --git a/lib/models/data/recipe_data_class.dart b/lib/models/data/recipe_data_class.dart index 3f707bc..3984ac6 100644 --- a/lib/models/data/recipe_data_class.dart +++ b/lib/models/data/recipe_data_class.dart @@ -1,6 +1,7 @@ import 'dart:convert'; import 'package:kulinar_app/models/recipe_class.dart'; +import 'package:kulinar_app/util/isar_handler.dart'; import 'package:kulinar_app/util/storage_handler.dart'; class RecipeData { @@ -8,11 +9,17 @@ class RecipeData { static List<Recipe> recipeList = []; static Future<void> save() async { - await StorageHandler.store("recipes", encode()); + recipeList.forEach((recipe) { + IsarHandler().save(recipe); + }); } static Future<void> load() async { - decode(await StorageHandler.fetch("recipes") ?? "[]"); + List<Recipe?> list = await IsarHandler().load(); + + list.forEach((recipe) { + recipeList.add(recipe!); + }); } static String encode() { diff --git a/lib/models/data/shoplist_data_class.dart b/lib/models/data/shoplist_data_class.dart index 3956282..c8516c3 100644 --- a/lib/models/data/shoplist_data_class.dart +++ b/lib/models/data/shoplist_data_class.dart @@ -7,7 +7,6 @@ class ShoplistData { static List<String> removed = []; static Future<void> save() async { - print("asd"); await StorageHandler.store("shoplist", encode()); } diff --git a/lib/models/recipe_class.dart b/lib/models/recipe_class.dart index 6873a1f..e02ed87 100644 --- a/lib/models/recipe_class.dart +++ b/lib/models/recipe_class.dart @@ -1,8 +1,13 @@ -import 'dart:convert'; +import "package:isar/isar.dart"; import 'package:kulinar_app/models/data/recipe_data_class.dart'; +part "recipe_class.g.dart"; + +@collection class Recipe { + Id id = Isar.autoIncrement; + String? title; String? image; String? description; @@ -33,22 +38,6 @@ class Recipe { return true; } - static Recipe fromJson(String string) { - final json = jsonDecode(string); - - return Recipe(title: json["title"], image: json["image"], description: json["description"]); - } - - String toJsonString() { - Map<String, String> map = { - "title": this.title ?? "", - "image": this.image ?? "", - "description": this.description ?? "", - }; - - return jsonEncode(map); - } - void toggleFavorite() { this.favorite = !this.favorite; } diff --git a/lib/models/recipe_class.g.dart b/lib/models/recipe_class.g.dart new file mode 100644 index 0000000..35c133d --- /dev/null +++ b/lib/models/recipe_class.g.dart @@ -0,0 +1,991 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'recipe_class.dart'; + +// ************************************************************************** +// IsarCollectionGenerator +// ************************************************************************** + +// coverage:ignore-file +// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters + +extension GetRecipeCollection on Isar { + IsarCollection<Recipe> get recipes => this.collection(); +} + +const RecipeSchema = CollectionSchema( + name: r'Recipe', + id: 8054415271972849591, + properties: { + r'description': PropertySchema( + id: 0, + name: r'description', + type: IsarType.string, + ), + r'favorite': PropertySchema( + id: 1, + name: r'favorite', + type: IsarType.bool, + ), + r'image': PropertySchema( + id: 2, + name: r'image', + type: IsarType.string, + ), + r'rating': PropertySchema( + id: 3, + name: r'rating', + type: IsarType.long, + ), + r'title': PropertySchema( + id: 4, + name: r'title', + type: IsarType.string, + ) + }, + estimateSize: _recipeEstimateSize, + serialize: _recipeSerialize, + deserialize: _recipeDeserialize, + deserializeProp: _recipeDeserializeProp, + idName: r'id', + indexes: {}, + links: {}, + embeddedSchemas: {}, + getId: _recipeGetId, + getLinks: _recipeGetLinks, + attach: _recipeAttach, + version: '3.0.5', +); + +int _recipeEstimateSize( + Recipe object, + List<int> offsets, + Map<Type, List<int>> allOffsets, +) { + var bytesCount = offsets.last; + { + final value = object.description; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } + { + final value = object.image; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } + { + final value = object.title; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } + return bytesCount; +} + +void _recipeSerialize( + Recipe object, + IsarWriter writer, + List<int> offsets, + Map<Type, List<int>> allOffsets, +) { + writer.writeString(offsets[0], object.description); + writer.writeBool(offsets[1], object.favorite); + writer.writeString(offsets[2], object.image); + writer.writeLong(offsets[3], object.rating); + writer.writeString(offsets[4], object.title); +} + +Recipe _recipeDeserialize( + Id id, + IsarReader reader, + List<int> offsets, + Map<Type, List<int>> allOffsets, +) { + final object = Recipe( + description: reader.readStringOrNull(offsets[0]), + favorite: reader.readBoolOrNull(offsets[1]) ?? false, + image: reader.readStringOrNull(offsets[2]), + rating: reader.readLongOrNull(offsets[3]) ?? 0, + title: reader.readStringOrNull(offsets[4]), + ); + object.id = id; + return object; +} + +P _recipeDeserializeProp<P>( + IsarReader reader, + int propertyId, + int offset, + Map<Type, List<int>> allOffsets, +) { + switch (propertyId) { + case 0: + return (reader.readStringOrNull(offset)) as P; + case 1: + return (reader.readBoolOrNull(offset) ?? false) as P; + case 2: + return (reader.readStringOrNull(offset)) as P; + case 3: + return (reader.readLongOrNull(offset) ?? 0) as P; + case 4: + return (reader.readStringOrNull(offset)) as P; + default: + throw IsarError('Unknown property with id $propertyId'); + } +} + +Id _recipeGetId(Recipe object) { + return object.id; +} + +List<IsarLinkBase<dynamic>> _recipeGetLinks(Recipe object) { + return []; +} + +void _recipeAttach(IsarCollection<dynamic> col, Id id, Recipe object) { + object.id = id; +} + +extension RecipeQueryWhereSort on QueryBuilder<Recipe, Recipe, QWhere> { + QueryBuilder<Recipe, Recipe, QAfterWhere> anyId() { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(const IdWhereClause.any()); + }); + } +} + +extension RecipeQueryWhere on QueryBuilder<Recipe, Recipe, QWhereClause> { + QueryBuilder<Recipe, Recipe, QAfterWhereClause> idEqualTo(Id id) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(IdWhereClause.between( + lower: id, + upper: id, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterWhereClause> idNotEqualTo(Id id) { + return QueryBuilder.apply(this, (query) { + if (query.whereSort == Sort.asc) { + return query + .addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: false), + ) + .addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: false), + ); + } else { + return query + .addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: false), + ) + .addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: false), + ); + } + }); + } + + QueryBuilder<Recipe, Recipe, QAfterWhereClause> idGreaterThan(Id id, + {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: include), + ); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterWhereClause> idLessThan(Id id, + {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: include), + ); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterWhereClause> idBetween( + Id lowerId, + Id upperId, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(IdWhereClause.between( + lower: lowerId, + includeLower: includeLower, + upper: upperId, + includeUpper: includeUpper, + )); + }); + } +} + +extension RecipeQueryFilter on QueryBuilder<Recipe, Recipe, QFilterCondition> { + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> descriptionIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'description', + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> descriptionIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'description', + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> descriptionEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'description', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> descriptionGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'description', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> descriptionLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'description', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> descriptionBetween( + String? lower, + String? upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'description', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> descriptionStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'description', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> descriptionEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'description', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> descriptionContains( + String value, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'description', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> descriptionMatches( + String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'description', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> descriptionIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'description', + value: '', + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> descriptionIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'description', + value: '', + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> favoriteEqualTo( + bool value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'favorite', + value: value, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> idEqualTo(Id value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'id', + value: value, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> idGreaterThan( + Id value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'id', + value: value, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> idLessThan( + Id value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'id', + value: value, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> idBetween( + Id lower, + Id upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'id', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> imageIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'image', + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> imageIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'image', + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> imageEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'image', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> imageGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'image', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> imageLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'image', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> imageBetween( + String? lower, + String? upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'image', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> imageStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'image', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> imageEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'image', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> imageContains( + String value, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'image', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> imageMatches( + String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'image', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> imageIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'image', + value: '', + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> imageIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'image', + value: '', + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> ratingEqualTo(int value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'rating', + value: value, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> ratingGreaterThan( + int value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'rating', + value: value, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> ratingLessThan( + int value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'rating', + value: value, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> ratingBetween( + int lower, + int upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'rating', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> titleIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'title', + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> titleIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'title', + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> titleEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'title', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> titleGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'title', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> titleLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'title', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> titleBetween( + String? lower, + String? upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'title', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> titleStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'title', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> titleEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'title', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> titleContains( + String value, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'title', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> titleMatches( + String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'title', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> titleIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'title', + value: '', + )); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterFilterCondition> titleIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'title', + value: '', + )); + }); + } +} + +extension RecipeQueryObject on QueryBuilder<Recipe, Recipe, QFilterCondition> {} + +extension RecipeQueryLinks on QueryBuilder<Recipe, Recipe, QFilterCondition> {} + +extension RecipeQuerySortBy on QueryBuilder<Recipe, Recipe, QSortBy> { + QueryBuilder<Recipe, Recipe, QAfterSortBy> sortByDescription() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'description', Sort.asc); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterSortBy> sortByDescriptionDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'description', Sort.desc); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterSortBy> sortByFavorite() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'favorite', Sort.asc); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterSortBy> sortByFavoriteDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'favorite', Sort.desc); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterSortBy> sortByImage() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'image', Sort.asc); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterSortBy> sortByImageDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'image', Sort.desc); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterSortBy> sortByRating() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'rating', Sort.asc); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterSortBy> sortByRatingDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'rating', Sort.desc); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterSortBy> sortByTitle() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'title', Sort.asc); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterSortBy> sortByTitleDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'title', Sort.desc); + }); + } +} + +extension RecipeQuerySortThenBy on QueryBuilder<Recipe, Recipe, QSortThenBy> { + QueryBuilder<Recipe, Recipe, QAfterSortBy> thenByDescription() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'description', Sort.asc); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterSortBy> thenByDescriptionDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'description', Sort.desc); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterSortBy> thenByFavorite() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'favorite', Sort.asc); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterSortBy> thenByFavoriteDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'favorite', Sort.desc); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterSortBy> thenById() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'id', Sort.asc); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterSortBy> thenByIdDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'id', Sort.desc); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterSortBy> thenByImage() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'image', Sort.asc); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterSortBy> thenByImageDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'image', Sort.desc); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterSortBy> thenByRating() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'rating', Sort.asc); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterSortBy> thenByRatingDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'rating', Sort.desc); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterSortBy> thenByTitle() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'title', Sort.asc); + }); + } + + QueryBuilder<Recipe, Recipe, QAfterSortBy> thenByTitleDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'title', Sort.desc); + }); + } +} + +extension RecipeQueryWhereDistinct on QueryBuilder<Recipe, Recipe, QDistinct> { + QueryBuilder<Recipe, Recipe, QDistinct> distinctByDescription( + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'description', caseSensitive: caseSensitive); + }); + } + + QueryBuilder<Recipe, Recipe, QDistinct> distinctByFavorite() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'favorite'); + }); + } + + QueryBuilder<Recipe, Recipe, QDistinct> distinctByImage( + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'image', caseSensitive: caseSensitive); + }); + } + + QueryBuilder<Recipe, Recipe, QDistinct> distinctByRating() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'rating'); + }); + } + + QueryBuilder<Recipe, Recipe, QDistinct> distinctByTitle( + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'title', caseSensitive: caseSensitive); + }); + } +} + +extension RecipeQueryProperty on QueryBuilder<Recipe, Recipe, QQueryProperty> { + QueryBuilder<Recipe, int, QQueryOperations> idProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'id'); + }); + } + + QueryBuilder<Recipe, String?, QQueryOperations> descriptionProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'description'); + }); + } + + QueryBuilder<Recipe, bool, QQueryOperations> favoriteProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'favorite'); + }); + } + + QueryBuilder<Recipe, String?, QQueryOperations> imageProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'image'); + }); + } + + QueryBuilder<Recipe, int, QQueryOperations> ratingProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'rating'); + }); + } + + QueryBuilder<Recipe, String?, QQueryOperations> titleProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'title'); + }); + } +} |