diff --git a/.metadata b/.metadata index 6d1a38a1..7fdf3f26 100644 --- a/.metadata +++ b/.metadata @@ -15,21 +15,6 @@ migration: - platform: root create_revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 base_revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 - - platform: android - create_revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 - base_revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 - - platform: ios - create_revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 - base_revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 - - platform: linux - create_revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 - base_revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 - - platform: macos - create_revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 - base_revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 - - platform: web - create_revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 - base_revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 - platform: windows create_revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 base_revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 diff --git a/lib/main.dart b/lib/main.dart index 6e5442c9..5f4970aa 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -5,51 +5,77 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:hive_flutter/hive_flutter.dart'; +import 'package:isar/isar.dart'; import 'package:mangayomi/models/categories.dart'; +import 'package:mangayomi/providers/hive_provider.dart'; import 'package:mangayomi/utils/constant.dart'; import 'package:mangayomi/models/manga_history.dart'; import 'package:mangayomi/models/model_manga.dart'; import 'package:mangayomi/router/router.dart'; import 'package:mangayomi/source/source_model.dart'; -import 'package:mangayomi/views/manga/download/download_model.dart'; +import 'package:mangayomi/views/manga/download/model/download_model.dart'; import 'package:mangayomi/views/manga/reader/providers/reader_controller_provider.dart'; import 'package:mangayomi/views/more/settings/appearance/providers/blend_level_state_provider.dart'; import 'views/more/settings/appearance/providers/flex_scheme_color_state_provider.dart'; import 'views/more/settings/appearance/providers/theme_mode_state_provider.dart'; +import 'package:path_provider/path_provider.dart'; +import 'package:path/path.dart' as path; +late Isar isar; void main() async { + WidgetsFlutterBinding.ensureInitialized(); if (Platform.isAndroid || Platform.isIOS) { await Hive.initFlutter(); } else { await Hive.initFlutter("Mangayomi/databases"); } - await FastCachedImageConfig.init(); - Hive.registerAdapter(ModelMangaAdapter()); - Hive.registerAdapter(MangaHistoryModelAdapter()); + await FastCachedImageConfig.init(subDir: "Mangayomi/databases"); + // Hive.registerAdapter(ModelMangaAdapter()); + // Hive.registerAdapter(MangaHistoryModelAdapter()); Hive.registerAdapter(SourceModelAdapter()); Hive.registerAdapter(ReaderModeAdapter()); Hive.registerAdapter(TypeSourceAdapter()); Hive.registerAdapter(DownloadModelAdapter()); - Hive.registerAdapter(ModelChaptersAdapter()); - Hive.registerAdapter(CategoriesModelAdapter()); - await Hive.openBox(HiveConstant.hiveBoxManga); - await Hive.openBox(HiveConstant.hiveBoxMangaHistory); + // Hive.registerAdapter(ModelChaptersAdapter()); + // Hive.registerAdapter(CategoriesModelAdapter()); + // await Hive.openBox(HiveConstant.hiveBoxManga); + // await Hive.openBox(HiveConstant.hiveBoxMangaHistory); await Hive.openBox(HiveConstant.hiveBoxReaderMode); await Hive.openBox(HiveConstant.hiveBoxMangaSource); await Hive.openBox(HiveConstant.hiveBoxDownloads); - await Hive.openBox(HiveConstant.hiveBoxMangaInfo); + // await Hive.openBox(HiveConstant.hiveBoxMangaInfo); await Hive.openBox(HiveConstant.hiveBoxMangaFilter); await Hive.openBox(HiveConstant.hiveBoxAppSettings); - await Hive.openBox(HiveConstant.hiveBoxCategories); + await Hive.openBox(HiveConstant.hiveBoxMangaInfo); + // await Hive.openBox(HiveConstant.hiveBoxCategories); + await initIsar(); runApp(const ProviderScope(child: MyApp())); } +initIsar() async { + final dir = await getApplicationDocumentsDirectory(); + if (Platform.isAndroid || Platform.isIOS) { + isar = Isar.openSync( + [ModelMangaSchema, ModelChaptersSchema, CategoriesModelSchema], + directory: dir.path, + ); + } else { + String rootDir = path.join(Directory.current.path, '.dart_tool', 'isar'); + await Directory(rootDir).create(recursive: true); // something like this + isar = await Isar.open( + [ModelMangaSchema, ModelChaptersSchema, CategoriesModelSchema], + directory: rootDir, + ); + } +} + class MyApp extends ConsumerWidget { const MyApp({super.key}); // This widget is the root of your application. @override Widget build(BuildContext context, WidgetRef ref) { + // ref.read(isarDataProvider.notifier).set(isar); final isThemeLight = ref.watch(themeModeStateProvider); final blendLevel = ref.watch(blendLevelStateProvider); ThemeData themeLight = FlexThemeData.light( diff --git a/lib/models/categories.dart b/lib/models/categories.dart index 78a8b2b0..0b9a0244 100644 --- a/lib/models/categories.dart +++ b/lib/models/categories.dart @@ -1,15 +1,13 @@ -import 'package:hive/hive.dart'; -import 'package:mangayomi/models/model_manga.dart'; +import 'package:isar/isar.dart'; part 'categories.g.dart'; -@HiveType(typeId: 8) -class CategoriesModel extends HiveObject { - @HiveField(0) - final int id; - @HiveField(1) - final String name; +@collection +@Name("Category") +class CategoriesModel { + Id? id; + String? name; CategoriesModel({ - required this.id, + this.id = Isar.autoIncrement, required this.name, }); } diff --git a/lib/models/categories.g.dart b/lib/models/categories.g.dart index 9a86c27f..80b13586 100644 --- a/lib/models/categories.g.dart +++ b/lib/models/categories.g.dart @@ -3,42 +3,486 @@ part of 'categories.dart'; // ************************************************************************** -// TypeAdapterGenerator +// IsarCollectionGenerator // ************************************************************************** -class CategoriesModelAdapter extends TypeAdapter { - @override - final int typeId = 8; +// 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, always_specify_types - @override - CategoriesModel read(BinaryReader reader) { - final numOfFields = reader.readByte(); - final fields = { - for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(), - }; - return CategoriesModel( - id: fields[0] as int, - name: fields[1] as String, - ); - } - - @override - void write(BinaryWriter writer, CategoriesModel obj) { - writer - ..writeByte(2) - ..writeByte(0) - ..write(obj.id) - ..writeByte(1) - ..write(obj.name); - } - - @override - int get hashCode => typeId.hashCode; - - @override - bool operator ==(Object other) => - identical(this, other) || - other is CategoriesModelAdapter && - runtimeType == other.runtimeType && - typeId == other.typeId; +extension GetCategoriesModelCollection on Isar { + IsarCollection get categoriesModels => this.collection(); +} + +const CategoriesModelSchema = CollectionSchema( + name: r'Category', + id: 5751694338128944171, + properties: { + r'name': PropertySchema( + id: 0, + name: r'name', + type: IsarType.string, + ) + }, + estimateSize: _categoriesModelEstimateSize, + serialize: _categoriesModelSerialize, + deserialize: _categoriesModelDeserialize, + deserializeProp: _categoriesModelDeserializeProp, + idName: r'id', + indexes: {}, + links: {}, + embeddedSchemas: {}, + getId: _categoriesModelGetId, + getLinks: _categoriesModelGetLinks, + attach: _categoriesModelAttach, + version: '3.1.0+1', +); + +int _categoriesModelEstimateSize( + CategoriesModel object, + List offsets, + Map> allOffsets, +) { + var bytesCount = offsets.last; + { + final value = object.name; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } + return bytesCount; +} + +void _categoriesModelSerialize( + CategoriesModel object, + IsarWriter writer, + List offsets, + Map> allOffsets, +) { + writer.writeString(offsets[0], object.name); +} + +CategoriesModel _categoriesModelDeserialize( + Id id, + IsarReader reader, + List offsets, + Map> allOffsets, +) { + final object = CategoriesModel( + id: id, + name: reader.readStringOrNull(offsets[0]), + ); + return object; +} + +P _categoriesModelDeserializeProp

( + IsarReader reader, + int propertyId, + int offset, + Map> allOffsets, +) { + switch (propertyId) { + case 0: + return (reader.readStringOrNull(offset)) as P; + default: + throw IsarError('Unknown property with id $propertyId'); + } +} + +Id _categoriesModelGetId(CategoriesModel object) { + return object.id ?? Isar.autoIncrement; +} + +List> _categoriesModelGetLinks(CategoriesModel object) { + return []; +} + +void _categoriesModelAttach( + IsarCollection col, Id id, CategoriesModel object) { + object.id = id; +} + +extension CategoriesModelQueryWhereSort + on QueryBuilder { + QueryBuilder anyId() { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(const IdWhereClause.any()); + }); + } +} + +extension CategoriesModelQueryWhere + on QueryBuilder { + QueryBuilder idEqualTo( + Id id) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(IdWhereClause.between( + lower: id, + upper: id, + )); + }); + } + + QueryBuilder + 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 + idGreaterThan(Id id, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: include), + ); + }); + } + + QueryBuilder idLessThan( + Id id, + {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: include), + ); + }); + } + + QueryBuilder 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 CategoriesModelQueryFilter + on QueryBuilder { + QueryBuilder + idIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'id', + )); + }); + } + + QueryBuilder + idIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'id', + )); + }); + } + + QueryBuilder + idEqualTo(Id? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'id', + value: value, + )); + }); + } + + QueryBuilder + idGreaterThan( + Id? value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'id', + value: value, + )); + }); + } + + QueryBuilder + idLessThan( + Id? value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'id', + value: value, + )); + }); + } + + QueryBuilder + 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 + nameIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'name', + )); + }); + } + + QueryBuilder + nameIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'name', + )); + }); + } + + QueryBuilder + nameEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + nameGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + nameLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + nameBetween( + 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'name', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + nameStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + nameEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + nameContains(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + nameMatches(String pattern, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'name', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + nameIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'name', + value: '', + )); + }); + } + + QueryBuilder + nameIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'name', + value: '', + )); + }); + } +} + +extension CategoriesModelQueryObject + on QueryBuilder {} + +extension CategoriesModelQueryLinks + on QueryBuilder {} + +extension CategoriesModelQuerySortBy + on QueryBuilder { + QueryBuilder sortByName() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'name', Sort.asc); + }); + } + + QueryBuilder + sortByNameDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'name', Sort.desc); + }); + } +} + +extension CategoriesModelQuerySortThenBy + on QueryBuilder { + QueryBuilder thenById() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'id', Sort.asc); + }); + } + + QueryBuilder thenByIdDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'id', Sort.desc); + }); + } + + QueryBuilder thenByName() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'name', Sort.asc); + }); + } + + QueryBuilder + thenByNameDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'name', Sort.desc); + }); + } +} + +extension CategoriesModelQueryWhereDistinct + on QueryBuilder { + QueryBuilder distinctByName( + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'name', caseSensitive: caseSensitive); + }); + } +} + +extension CategoriesModelQueryProperty + on QueryBuilder { + QueryBuilder idProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'id'); + }); + } + + QueryBuilder nameProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'name'); + }); + } } diff --git a/lib/models/manga_history.dart b/lib/models/manga_history.dart index 49fbd553..5f9234c3 100644 --- a/lib/models/manga_history.dart +++ b/lib/models/manga_history.dart @@ -1,12 +1,12 @@ -import 'package:hive/hive.dart'; -import 'package:mangayomi/models/model_manga.dart'; -part 'manga_history.g.dart'; +// import 'package:hive/hive.dart'; +// import 'package:mangayomi/models/model_manga.dart'; +// part 'manga_history.g.dart'; -@HiveType(typeId: 2) -class MangaHistoryModel extends HiveObject { - @HiveField(0) - final ModelManga modelManga; - @HiveField(1) - final String date; - MangaHistoryModel({required this.date, required this.modelManga}); -} +// @HiveType(typeId: 2) +// class MangaHistoryModel extends HiveObject { +// @HiveField(0) +// final ModelManga modelManga; +// @HiveField(1) +// final String date; +// MangaHistoryModel({required this.date, required this.modelManga}); +// } diff --git a/lib/models/manga_history.g.dart b/lib/models/manga_history.g.dart deleted file mode 100644 index f5090d86..00000000 --- a/lib/models/manga_history.g.dart +++ /dev/null @@ -1,44 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'manga_history.dart'; - -// ************************************************************************** -// TypeAdapterGenerator -// ************************************************************************** - -class MangaHistoryModelAdapter extends TypeAdapter { - @override - final int typeId = 2; - - @override - MangaHistoryModel read(BinaryReader reader) { - final numOfFields = reader.readByte(); - final fields = { - for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(), - }; - return MangaHistoryModel( - date: fields[1] as String, - modelManga: fields[0] as ModelManga, - ); - } - - @override - void write(BinaryWriter writer, MangaHistoryModel obj) { - writer - ..writeByte(2) - ..writeByte(0) - ..write(obj.modelManga) - ..writeByte(1) - ..write(obj.date); - } - - @override - int get hashCode => typeId.hashCode; - - @override - bool operator ==(Object other) => - identical(this, other) || - other is MangaHistoryModelAdapter && - runtimeType == other.runtimeType && - typeId == other.typeId; -} diff --git a/lib/models/model_manga.dart b/lib/models/model_manga.dart index 54f0596f..d03c93a6 100644 --- a/lib/models/model_manga.dart +++ b/lib/models/model_manga.dart @@ -1,97 +1,87 @@ -import 'package:hive/hive.dart'; - +import 'package:isar/isar.dart'; part 'model_manga.g.dart'; -@HiveType(typeId: 0) -class ModelManga extends HiveObject { - @HiveField(0) +@collection +@Name("Manga") +class ModelManga { + Id? id; + String? name; - @HiveField(1) String? link; - @HiveField(2) String? imageUrl; - @HiveField(3) String? description; - @HiveField(4) String? author; - @HiveField(5) String? status; - @HiveField(6) List? genre; - @HiveField(7) bool favorite; - @HiveField(8) String? source; - @HiveField(9) String? lang; - @HiveField(10) int? dateAdded; - @HiveField(11) int? lastUpdate; - @HiveField(12) - List? chapters; - - @HiveField(13) String? lastRead; - @HiveField(14) List? categories; + @Backlink(to: "manga") + final chapters = IsarLinks(); - ModelManga( - {required this.source, - required this.author, - required this.favorite, - required this.genre, - required this.imageUrl, - required this.lang, - required this.link, - required this.name, - required this.status, - required this.description, - required this.dateAdded, - required this.lastUpdate, - required this.categories, - required this.lastRead, - required this.chapters}); + ModelManga({ + this.id = Isar.autoIncrement, + required this.source, + required this.author, + required this.favorite, + required this.genre, + required this.imageUrl, + required this.lang, + required this.link, + required this.name, + required this.status, + required this.description, + required this.dateAdded, + required this.lastUpdate, + required this.categories, + required this.lastRead, + }); } -@HiveType(typeId: 7) -class ModelChapters extends HiveObject { - @HiveField(0) +@collection +@Name("Chapters") +class ModelChapters { + Id? id; + + int? mangaId; + String? name; - @HiveField(1) String? url; - @HiveField(2) String? dateUpload; - @HiveField(3) String? scanlator; - @HiveField(4) - bool isBookmarked; + bool? isBookmarked; - @HiveField(5) - bool isRead; + bool? isRead; - @HiveField(6) - String lastPageRead; + String? lastPageRead; + + final manga = IsarLink(); ModelChapters( - {required this.name, + {this.id = Isar.autoIncrement, + required this.mangaId, + required this.name, required this.url, required this.dateUpload, required this.isBookmarked, diff --git a/lib/models/model_manga.g.dart b/lib/models/model_manga.g.dart index 458463a6..e0067643 100644 --- a/lib/models/model_manga.g.dart +++ b/lib/models/model_manga.g.dart @@ -3,133 +3,4498 @@ part of 'model_manga.dart'; // ************************************************************************** -// TypeAdapterGenerator +// IsarCollectionGenerator // ************************************************************************** -class ModelMangaAdapter extends TypeAdapter { - @override - final int typeId = 0; +// 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, always_specify_types - @override - ModelManga read(BinaryReader reader) { - final numOfFields = reader.readByte(); - final fields = { - for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(), - }; - return ModelManga( - source: fields[8] as String?, - author: fields[4] as String?, - favorite: fields[7] as bool, - genre: (fields[6] as List?)?.cast(), - imageUrl: fields[2] as String?, - lang: fields[9] as String?, - link: fields[1] as String?, - name: fields[0] as String?, - status: fields[5] as String?, - description: fields[3] as String?, - dateAdded: fields[10] as int?, - lastUpdate: fields[11] as int?, - categories: (fields[14] as List?)?.cast(), - lastRead: fields[13] as String?, - chapters: (fields[12] as List?)?.cast(), - ); - } - - @override - void write(BinaryWriter writer, ModelManga obj) { - writer - ..writeByte(15) - ..writeByte(0) - ..write(obj.name) - ..writeByte(1) - ..write(obj.link) - ..writeByte(2) - ..write(obj.imageUrl) - ..writeByte(3) - ..write(obj.description) - ..writeByte(4) - ..write(obj.author) - ..writeByte(5) - ..write(obj.status) - ..writeByte(6) - ..write(obj.genre) - ..writeByte(7) - ..write(obj.favorite) - ..writeByte(8) - ..write(obj.source) - ..writeByte(9) - ..write(obj.lang) - ..writeByte(10) - ..write(obj.dateAdded) - ..writeByte(11) - ..write(obj.lastUpdate) - ..writeByte(12) - ..write(obj.chapters) - ..writeByte(13) - ..write(obj.lastRead) - ..writeByte(14) - ..write(obj.categories); - } - - @override - int get hashCode => typeId.hashCode; - - @override - bool operator ==(Object other) => - identical(this, other) || - other is ModelMangaAdapter && - runtimeType == other.runtimeType && - typeId == other.typeId; +extension GetModelMangaCollection on Isar { + IsarCollection get modelMangas => this.collection(); } -class ModelChaptersAdapter extends TypeAdapter { - @override - final int typeId = 7; +const ModelMangaSchema = CollectionSchema( + name: r'Manga', + id: -5643034226035087553, + properties: { + r'author': PropertySchema( + id: 0, + name: r'author', + type: IsarType.string, + ), + r'categories': PropertySchema( + id: 1, + name: r'categories', + type: IsarType.longList, + ), + r'dateAdded': PropertySchema( + id: 2, + name: r'dateAdded', + type: IsarType.long, + ), + r'description': PropertySchema( + id: 3, + name: r'description', + type: IsarType.string, + ), + r'favorite': PropertySchema( + id: 4, + name: r'favorite', + type: IsarType.bool, + ), + r'genre': PropertySchema( + id: 5, + name: r'genre', + type: IsarType.stringList, + ), + r'imageUrl': PropertySchema( + id: 6, + name: r'imageUrl', + type: IsarType.string, + ), + r'lang': PropertySchema( + id: 7, + name: r'lang', + type: IsarType.string, + ), + r'lastRead': PropertySchema( + id: 8, + name: r'lastRead', + type: IsarType.string, + ), + r'lastUpdate': PropertySchema( + id: 9, + name: r'lastUpdate', + type: IsarType.long, + ), + r'link': PropertySchema( + id: 10, + name: r'link', + type: IsarType.string, + ), + r'name': PropertySchema( + id: 11, + name: r'name', + type: IsarType.string, + ), + r'source': PropertySchema( + id: 12, + name: r'source', + type: IsarType.string, + ), + r'status': PropertySchema( + id: 13, + name: r'status', + type: IsarType.string, + ) + }, + estimateSize: _modelMangaEstimateSize, + serialize: _modelMangaSerialize, + deserialize: _modelMangaDeserialize, + deserializeProp: _modelMangaDeserializeProp, + idName: r'id', + indexes: {}, + links: { + r'chapters': LinkSchema( + id: -2831037668580186511, + name: r'chapters', + target: r'Chapters', + single: false, + linkName: r'manga', + ) + }, + embeddedSchemas: {}, + getId: _modelMangaGetId, + getLinks: _modelMangaGetLinks, + attach: _modelMangaAttach, + version: '3.1.0+1', +); - @override - ModelChapters read(BinaryReader reader) { - final numOfFields = reader.readByte(); - final fields = { - for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(), - }; - return ModelChapters( - name: fields[0] as String?, - url: fields[1] as String?, - dateUpload: fields[2] as String?, - isBookmarked: fields[4] as bool, - scanlator: fields[3] as String?, - isRead: fields[5] as bool, - lastPageRead: fields[6] as String, - ); +int _modelMangaEstimateSize( + ModelManga object, + List offsets, + Map> allOffsets, +) { + var bytesCount = offsets.last; + { + final value = object.author; + if (value != null) { + bytesCount += 3 + value.length * 3; + } } - - @override - void write(BinaryWriter writer, ModelChapters obj) { - writer - ..writeByte(7) - ..writeByte(0) - ..write(obj.name) - ..writeByte(1) - ..write(obj.url) - ..writeByte(2) - ..write(obj.dateUpload) - ..writeByte(3) - ..write(obj.scanlator) - ..writeByte(4) - ..write(obj.isBookmarked) - ..writeByte(5) - ..write(obj.isRead) - ..writeByte(6) - ..write(obj.lastPageRead); + { + final value = object.categories; + if (value != null) { + bytesCount += 3 + value.length * 8; + } + } + { + final value = object.description; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } + { + final list = object.genre; + if (list != null) { + bytesCount += 3 + list.length * 3; + { + for (var i = 0; i < list.length; i++) { + final value = list[i]; + bytesCount += value.length * 3; + } + } + } + } + { + final value = object.imageUrl; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } + { + final value = object.lang; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } + { + final value = object.lastRead; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } + { + final value = object.link; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } + { + final value = object.name; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } + { + final value = object.source; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } + { + final value = object.status; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } + return bytesCount; +} + +void _modelMangaSerialize( + ModelManga object, + IsarWriter writer, + List offsets, + Map> allOffsets, +) { + writer.writeString(offsets[0], object.author); + writer.writeLongList(offsets[1], object.categories); + writer.writeLong(offsets[2], object.dateAdded); + writer.writeString(offsets[3], object.description); + writer.writeBool(offsets[4], object.favorite); + writer.writeStringList(offsets[5], object.genre); + writer.writeString(offsets[6], object.imageUrl); + writer.writeString(offsets[7], object.lang); + writer.writeString(offsets[8], object.lastRead); + writer.writeLong(offsets[9], object.lastUpdate); + writer.writeString(offsets[10], object.link); + writer.writeString(offsets[11], object.name); + writer.writeString(offsets[12], object.source); + writer.writeString(offsets[13], object.status); +} + +ModelManga _modelMangaDeserialize( + Id id, + IsarReader reader, + List offsets, + Map> allOffsets, +) { + final object = ModelManga( + author: reader.readStringOrNull(offsets[0]), + categories: reader.readLongList(offsets[1]), + dateAdded: reader.readLongOrNull(offsets[2]), + description: reader.readStringOrNull(offsets[3]), + favorite: reader.readBool(offsets[4]), + genre: reader.readStringList(offsets[5]), + id: id, + imageUrl: reader.readStringOrNull(offsets[6]), + lang: reader.readStringOrNull(offsets[7]), + lastRead: reader.readStringOrNull(offsets[8]), + lastUpdate: reader.readLongOrNull(offsets[9]), + link: reader.readStringOrNull(offsets[10]), + name: reader.readStringOrNull(offsets[11]), + source: reader.readStringOrNull(offsets[12]), + status: reader.readStringOrNull(offsets[13]), + ); + return object; +} + +P _modelMangaDeserializeProp

( + IsarReader reader, + int propertyId, + int offset, + Map> allOffsets, +) { + switch (propertyId) { + case 0: + return (reader.readStringOrNull(offset)) as P; + case 1: + return (reader.readLongList(offset)) as P; + case 2: + return (reader.readLongOrNull(offset)) as P; + case 3: + return (reader.readStringOrNull(offset)) as P; + case 4: + return (reader.readBool(offset)) as P; + case 5: + return (reader.readStringList(offset)) as P; + case 6: + return (reader.readStringOrNull(offset)) as P; + case 7: + return (reader.readStringOrNull(offset)) as P; + case 8: + return (reader.readStringOrNull(offset)) as P; + case 9: + return (reader.readLongOrNull(offset)) as P; + case 10: + return (reader.readStringOrNull(offset)) as P; + case 11: + return (reader.readStringOrNull(offset)) as P; + case 12: + return (reader.readStringOrNull(offset)) as P; + case 13: + return (reader.readStringOrNull(offset)) as P; + default: + throw IsarError('Unknown property with id $propertyId'); + } +} + +Id _modelMangaGetId(ModelManga object) { + return object.id ?? Isar.autoIncrement; +} + +List> _modelMangaGetLinks(ModelManga object) { + return [object.chapters]; +} + +void _modelMangaAttach(IsarCollection col, Id id, ModelManga object) { + object.id = id; + object.chapters + .attach(col, col.isar.collection(), r'chapters', id); +} + +extension ModelMangaQueryWhereSort + on QueryBuilder { + QueryBuilder anyId() { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(const IdWhereClause.any()); + }); + } +} + +extension ModelMangaQueryWhere + on QueryBuilder { + QueryBuilder idEqualTo(Id id) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(IdWhereClause.between( + lower: id, + upper: id, + )); + }); + } + + QueryBuilder 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 idGreaterThan(Id id, + {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: include), + ); + }); + } + + QueryBuilder idLessThan(Id id, + {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: include), + ); + }); + } + + QueryBuilder 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 ModelMangaQueryFilter + on QueryBuilder { + QueryBuilder authorIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'author', + )); + }); + } + + QueryBuilder + authorIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'author', + )); + }); + } + + QueryBuilder authorEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'author', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder authorGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'author', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder authorLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'author', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder authorBetween( + 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'author', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder authorStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'author', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder authorEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'author', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder authorContains( + String value, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'author', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder authorMatches( + String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'author', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder authorIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'author', + value: '', + )); + }); + } + + QueryBuilder + authorIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'author', + value: '', + )); + }); + } + + QueryBuilder + categoriesIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'categories', + )); + }); + } + + QueryBuilder + categoriesIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'categories', + )); + }); + } + + QueryBuilder + categoriesElementEqualTo(int value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'categories', + value: value, + )); + }); + } + + QueryBuilder + categoriesElementGreaterThan( + int value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'categories', + value: value, + )); + }); + } + + QueryBuilder + categoriesElementLessThan( + int value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'categories', + value: value, + )); + }); + } + + QueryBuilder + categoriesElementBetween( + int lower, + int upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'categories', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + )); + }); + } + + QueryBuilder + categoriesLengthEqualTo(int length) { + return QueryBuilder.apply(this, (query) { + return query.listLength( + r'categories', + length, + true, + length, + true, + ); + }); + } + + QueryBuilder + categoriesIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength( + r'categories', + 0, + true, + 0, + true, + ); + }); + } + + QueryBuilder + categoriesIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength( + r'categories', + 0, + false, + 999999, + true, + ); + }); + } + + QueryBuilder + categoriesLengthLessThan( + int length, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.listLength( + r'categories', + 0, + true, + length, + include, + ); + }); + } + + QueryBuilder + categoriesLengthGreaterThan( + int length, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.listLength( + r'categories', + length, + include, + 999999, + true, + ); + }); + } + + QueryBuilder + categoriesLengthBetween( + int lower, + int upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.listLength( + r'categories', + lower, + includeLower, + upper, + includeUpper, + ); + }); + } + + QueryBuilder + dateAddedIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'dateAdded', + )); + }); + } + + QueryBuilder + dateAddedIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'dateAdded', + )); + }); + } + + QueryBuilder dateAddedEqualTo( + int? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'dateAdded', + value: value, + )); + }); + } + + QueryBuilder + dateAddedGreaterThan( + int? value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'dateAdded', + value: value, + )); + }); + } + + QueryBuilder dateAddedLessThan( + int? value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'dateAdded', + value: value, + )); + }); + } + + QueryBuilder dateAddedBetween( + int? lower, + int? upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'dateAdded', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + )); + }); + } + + QueryBuilder + descriptionIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'description', + )); + }); + } + + QueryBuilder + descriptionIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'description', + )); + }); + } + + QueryBuilder + descriptionEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'description', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + 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 + 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 + 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 + descriptionStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'description', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + descriptionEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'description', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + descriptionContains(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'description', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + descriptionMatches(String pattern, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'description', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + descriptionIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'description', + value: '', + )); + }); + } + + QueryBuilder + descriptionIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'description', + value: '', + )); + }); + } + + QueryBuilder favoriteEqualTo( + bool value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'favorite', + value: value, + )); + }); + } + + QueryBuilder genreIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'genre', + )); + }); + } + + QueryBuilder genreIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'genre', + )); + }); + } + + QueryBuilder + genreElementEqualTo( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'genre', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + genreElementGreaterThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'genre', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + genreElementLessThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'genre', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + genreElementBetween( + 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'genre', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + genreElementStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'genre', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + genreElementEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'genre', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + genreElementContains(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'genre', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + genreElementMatches(String pattern, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'genre', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + genreElementIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'genre', + value: '', + )); + }); + } + + QueryBuilder + genreElementIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'genre', + value: '', + )); + }); + } + + QueryBuilder + genreLengthEqualTo(int length) { + return QueryBuilder.apply(this, (query) { + return query.listLength( + r'genre', + length, + true, + length, + true, + ); + }); + } + + QueryBuilder genreIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength( + r'genre', + 0, + true, + 0, + true, + ); + }); + } + + QueryBuilder + genreIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength( + r'genre', + 0, + false, + 999999, + true, + ); + }); + } + + QueryBuilder + genreLengthLessThan( + int length, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.listLength( + r'genre', + 0, + true, + length, + include, + ); + }); + } + + QueryBuilder + genreLengthGreaterThan( + int length, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.listLength( + r'genre', + length, + include, + 999999, + true, + ); + }); + } + + QueryBuilder + genreLengthBetween( + int lower, + int upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.listLength( + r'genre', + lower, + includeLower, + upper, + includeUpper, + ); + }); + } + + QueryBuilder idIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'id', + )); + }); + } + + QueryBuilder idIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'id', + )); + }); + } + + QueryBuilder idEqualTo( + Id? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idGreaterThan( + Id? value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idLessThan( + Id? value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'id', + value: value, + )); + }); + } + + QueryBuilder 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 imageUrlIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'imageUrl', + )); + }); + } + + QueryBuilder + imageUrlIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'imageUrl', + )); + }); + } + + QueryBuilder imageUrlEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'imageUrl', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + imageUrlGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'imageUrl', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder imageUrlLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'imageUrl', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder imageUrlBetween( + 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'imageUrl', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + imageUrlStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'imageUrl', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder imageUrlEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'imageUrl', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder imageUrlContains( + String value, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'imageUrl', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder imageUrlMatches( + String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'imageUrl', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + imageUrlIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'imageUrl', + value: '', + )); + }); + } + + QueryBuilder + imageUrlIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'imageUrl', + value: '', + )); + }); + } + + QueryBuilder langIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'lang', + )); + }); + } + + QueryBuilder langIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'lang', + )); + }); + } + + QueryBuilder langEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'lang', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder langGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'lang', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder langLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'lang', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder langBetween( + 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'lang', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder langStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'lang', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder langEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'lang', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder langContains( + String value, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'lang', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder langMatches( + String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'lang', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder langIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'lang', + value: '', + )); + }); + } + + QueryBuilder langIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'lang', + value: '', + )); + }); + } + + QueryBuilder lastReadIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'lastRead', + )); + }); + } + + QueryBuilder + lastReadIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'lastRead', + )); + }); + } + + QueryBuilder lastReadEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'lastRead', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + lastReadGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'lastRead', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder lastReadLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'lastRead', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder lastReadBetween( + 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'lastRead', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + lastReadStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'lastRead', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder lastReadEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'lastRead', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder lastReadContains( + String value, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'lastRead', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder lastReadMatches( + String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'lastRead', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + lastReadIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'lastRead', + value: '', + )); + }); + } + + QueryBuilder + lastReadIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'lastRead', + value: '', + )); + }); + } + + QueryBuilder + lastUpdateIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'lastUpdate', + )); + }); + } + + QueryBuilder + lastUpdateIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'lastUpdate', + )); + }); + } + + QueryBuilder lastUpdateEqualTo( + int? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'lastUpdate', + value: value, + )); + }); + } + + QueryBuilder + lastUpdateGreaterThan( + int? value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'lastUpdate', + value: value, + )); + }); + } + + QueryBuilder + lastUpdateLessThan( + int? value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'lastUpdate', + value: value, + )); + }); + } + + QueryBuilder lastUpdateBetween( + int? lower, + int? upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'lastUpdate', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + )); + }); + } + + QueryBuilder linkIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'link', + )); + }); + } + + QueryBuilder linkIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'link', + )); + }); + } + + QueryBuilder linkEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'link', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder linkGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'link', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder linkLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'link', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder linkBetween( + 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'link', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder linkStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'link', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder linkEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'link', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder linkContains( + String value, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'link', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder linkMatches( + String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'link', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder linkIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'link', + value: '', + )); + }); + } + + QueryBuilder linkIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'link', + value: '', + )); + }); + } + + QueryBuilder nameIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'name', + )); + }); + } + + QueryBuilder nameIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'name', + )); + }); + } + + QueryBuilder nameEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameBetween( + 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'name', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameContains( + String value, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameMatches( + String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'name', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'name', + value: '', + )); + }); + } + + QueryBuilder nameIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'name', + value: '', + )); + }); + } + + QueryBuilder sourceIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'source', + )); + }); + } + + QueryBuilder + sourceIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'source', + )); + }); + } + + QueryBuilder sourceEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'source', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder sourceGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'source', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder sourceLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'source', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder sourceBetween( + 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'source', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder sourceStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'source', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder sourceEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'source', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder sourceContains( + String value, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'source', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder sourceMatches( + String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'source', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder sourceIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'source', + value: '', + )); + }); + } + + QueryBuilder + sourceIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'source', + value: '', + )); + }); + } + + QueryBuilder statusIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'status', + )); + }); + } + + QueryBuilder + statusIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'status', + )); + }); + } + + QueryBuilder statusEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'status', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder statusGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'status', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder statusLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'status', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder statusBetween( + 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'status', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder statusStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'status', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder statusEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'status', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder statusContains( + String value, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'status', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder statusMatches( + String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'status', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder statusIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'status', + value: '', + )); + }); + } + + QueryBuilder + statusIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'status', + value: '', + )); + }); + } +} + +extension ModelMangaQueryObject + on QueryBuilder {} + +extension ModelMangaQueryLinks + on QueryBuilder { + QueryBuilder chapters( + FilterQuery q) { + return QueryBuilder.apply(this, (query) { + return query.link(q, r'chapters'); + }); + } + + QueryBuilder + chaptersLengthEqualTo(int length) { + return QueryBuilder.apply(this, (query) { + return query.linkLength(r'chapters', length, true, length, true); + }); + } + + QueryBuilder + chaptersIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.linkLength(r'chapters', 0, true, 0, true); + }); + } + + QueryBuilder + chaptersIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.linkLength(r'chapters', 0, false, 999999, true); + }); + } + + QueryBuilder + chaptersLengthLessThan( + int length, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.linkLength(r'chapters', 0, true, length, include); + }); + } + + QueryBuilder + chaptersLengthGreaterThan( + int length, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.linkLength(r'chapters', length, include, 999999, true); + }); + } + + QueryBuilder + chaptersLengthBetween( + int lower, + int upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.linkLength( + r'chapters', lower, includeLower, upper, includeUpper); + }); + } +} + +extension ModelMangaQuerySortBy + on QueryBuilder { + QueryBuilder sortByAuthor() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'author', Sort.asc); + }); + } + + QueryBuilder sortByAuthorDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'author', Sort.desc); + }); + } + + QueryBuilder sortByDateAdded() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'dateAdded', Sort.asc); + }); + } + + QueryBuilder sortByDateAddedDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'dateAdded', Sort.desc); + }); + } + + QueryBuilder sortByDescription() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'description', Sort.asc); + }); + } + + QueryBuilder sortByDescriptionDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'description', Sort.desc); + }); + } + + QueryBuilder sortByFavorite() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'favorite', Sort.asc); + }); + } + + QueryBuilder sortByFavoriteDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'favorite', Sort.desc); + }); + } + + QueryBuilder sortByImageUrl() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'imageUrl', Sort.asc); + }); + } + + QueryBuilder sortByImageUrlDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'imageUrl', Sort.desc); + }); + } + + QueryBuilder sortByLang() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'lang', Sort.asc); + }); + } + + QueryBuilder sortByLangDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'lang', Sort.desc); + }); + } + + QueryBuilder sortByLastRead() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'lastRead', Sort.asc); + }); + } + + QueryBuilder sortByLastReadDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'lastRead', Sort.desc); + }); + } + + QueryBuilder sortByLastUpdate() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'lastUpdate', Sort.asc); + }); + } + + QueryBuilder sortByLastUpdateDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'lastUpdate', Sort.desc); + }); + } + + QueryBuilder sortByLink() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'link', Sort.asc); + }); + } + + QueryBuilder sortByLinkDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'link', Sort.desc); + }); + } + + QueryBuilder sortByName() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'name', Sort.asc); + }); + } + + QueryBuilder sortByNameDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'name', Sort.desc); + }); + } + + QueryBuilder sortBySource() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'source', Sort.asc); + }); + } + + QueryBuilder sortBySourceDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'source', Sort.desc); + }); + } + + QueryBuilder sortByStatus() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'status', Sort.asc); + }); + } + + QueryBuilder sortByStatusDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'status', Sort.desc); + }); + } +} + +extension ModelMangaQuerySortThenBy + on QueryBuilder { + QueryBuilder thenByAuthor() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'author', Sort.asc); + }); + } + + QueryBuilder thenByAuthorDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'author', Sort.desc); + }); + } + + QueryBuilder thenByDateAdded() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'dateAdded', Sort.asc); + }); + } + + QueryBuilder thenByDateAddedDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'dateAdded', Sort.desc); + }); + } + + QueryBuilder thenByDescription() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'description', Sort.asc); + }); + } + + QueryBuilder thenByDescriptionDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'description', Sort.desc); + }); + } + + QueryBuilder thenByFavorite() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'favorite', Sort.asc); + }); + } + + QueryBuilder thenByFavoriteDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'favorite', Sort.desc); + }); + } + + QueryBuilder thenById() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'id', Sort.asc); + }); + } + + QueryBuilder thenByIdDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'id', Sort.desc); + }); + } + + QueryBuilder thenByImageUrl() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'imageUrl', Sort.asc); + }); + } + + QueryBuilder thenByImageUrlDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'imageUrl', Sort.desc); + }); + } + + QueryBuilder thenByLang() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'lang', Sort.asc); + }); + } + + QueryBuilder thenByLangDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'lang', Sort.desc); + }); + } + + QueryBuilder thenByLastRead() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'lastRead', Sort.asc); + }); + } + + QueryBuilder thenByLastReadDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'lastRead', Sort.desc); + }); + } + + QueryBuilder thenByLastUpdate() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'lastUpdate', Sort.asc); + }); + } + + QueryBuilder thenByLastUpdateDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'lastUpdate', Sort.desc); + }); + } + + QueryBuilder thenByLink() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'link', Sort.asc); + }); + } + + QueryBuilder thenByLinkDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'link', Sort.desc); + }); + } + + QueryBuilder thenByName() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'name', Sort.asc); + }); + } + + QueryBuilder thenByNameDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'name', Sort.desc); + }); + } + + QueryBuilder thenBySource() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'source', Sort.asc); + }); + } + + QueryBuilder thenBySourceDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'source', Sort.desc); + }); + } + + QueryBuilder thenByStatus() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'status', Sort.asc); + }); + } + + QueryBuilder thenByStatusDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'status', Sort.desc); + }); + } +} + +extension ModelMangaQueryWhereDistinct + on QueryBuilder { + QueryBuilder distinctByAuthor( + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'author', caseSensitive: caseSensitive); + }); + } + + QueryBuilder distinctByCategories() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'categories'); + }); + } + + QueryBuilder distinctByDateAdded() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'dateAdded'); + }); + } + + QueryBuilder distinctByDescription( + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'description', caseSensitive: caseSensitive); + }); + } + + QueryBuilder distinctByFavorite() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'favorite'); + }); + } + + QueryBuilder distinctByGenre() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'genre'); + }); + } + + QueryBuilder distinctByImageUrl( + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'imageUrl', caseSensitive: caseSensitive); + }); + } + + QueryBuilder distinctByLang( + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'lang', caseSensitive: caseSensitive); + }); + } + + QueryBuilder distinctByLastRead( + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'lastRead', caseSensitive: caseSensitive); + }); + } + + QueryBuilder distinctByLastUpdate() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'lastUpdate'); + }); + } + + QueryBuilder distinctByLink( + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'link', caseSensitive: caseSensitive); + }); + } + + QueryBuilder distinctByName( + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'name', caseSensitive: caseSensitive); + }); + } + + QueryBuilder distinctBySource( + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'source', caseSensitive: caseSensitive); + }); + } + + QueryBuilder distinctByStatus( + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'status', caseSensitive: caseSensitive); + }); + } +} + +extension ModelMangaQueryProperty + on QueryBuilder { + QueryBuilder idProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'id'); + }); + } + + QueryBuilder authorProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'author'); + }); + } + + QueryBuilder?, QQueryOperations> categoriesProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'categories'); + }); + } + + QueryBuilder dateAddedProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'dateAdded'); + }); + } + + QueryBuilder descriptionProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'description'); + }); + } + + QueryBuilder favoriteProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'favorite'); + }); + } + + QueryBuilder?, QQueryOperations> genreProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'genre'); + }); + } + + QueryBuilder imageUrlProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'imageUrl'); + }); + } + + QueryBuilder langProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'lang'); + }); + } + + QueryBuilder lastReadProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'lastRead'); + }); + } + + QueryBuilder lastUpdateProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'lastUpdate'); + }); + } + + QueryBuilder linkProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'link'); + }); + } + + QueryBuilder nameProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'name'); + }); + } + + QueryBuilder sourceProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'source'); + }); + } + + QueryBuilder statusProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'status'); + }); + } +} + +// 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, always_specify_types + +extension GetModelChaptersCollection on Isar { + IsarCollection get modelChapters => this.collection(); +} + +const ModelChaptersSchema = CollectionSchema( + name: r'Chapters', + id: -4332417802576542229, + properties: { + r'dateUpload': PropertySchema( + id: 0, + name: r'dateUpload', + type: IsarType.string, + ), + r'isBookmarked': PropertySchema( + id: 1, + name: r'isBookmarked', + type: IsarType.bool, + ), + r'isRead': PropertySchema( + id: 2, + name: r'isRead', + type: IsarType.bool, + ), + r'lastPageRead': PropertySchema( + id: 3, + name: r'lastPageRead', + type: IsarType.string, + ), + r'mangaId': PropertySchema( + id: 4, + name: r'mangaId', + type: IsarType.long, + ), + r'name': PropertySchema( + id: 5, + name: r'name', + type: IsarType.string, + ), + r'scanlator': PropertySchema( + id: 6, + name: r'scanlator', + type: IsarType.string, + ), + r'url': PropertySchema( + id: 7, + name: r'url', + type: IsarType.string, + ) + }, + estimateSize: _modelChaptersEstimateSize, + serialize: _modelChaptersSerialize, + deserialize: _modelChaptersDeserialize, + deserializeProp: _modelChaptersDeserializeProp, + idName: r'id', + indexes: {}, + links: { + r'manga': LinkSchema( + id: -8597376755591268324, + name: r'manga', + target: r'Manga', + single: true, + ) + }, + embeddedSchemas: {}, + getId: _modelChaptersGetId, + getLinks: _modelChaptersGetLinks, + attach: _modelChaptersAttach, + version: '3.1.0+1', +); + +int _modelChaptersEstimateSize( + ModelChapters object, + List offsets, + Map> allOffsets, +) { + var bytesCount = offsets.last; + { + final value = object.dateUpload; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } + { + final value = object.lastPageRead; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } + { + final value = object.name; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } + { + final value = object.scanlator; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } + { + final value = object.url; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } + return bytesCount; +} + +void _modelChaptersSerialize( + ModelChapters object, + IsarWriter writer, + List offsets, + Map> allOffsets, +) { + writer.writeString(offsets[0], object.dateUpload); + writer.writeBool(offsets[1], object.isBookmarked); + writer.writeBool(offsets[2], object.isRead); + writer.writeString(offsets[3], object.lastPageRead); + writer.writeLong(offsets[4], object.mangaId); + writer.writeString(offsets[5], object.name); + writer.writeString(offsets[6], object.scanlator); + writer.writeString(offsets[7], object.url); +} + +ModelChapters _modelChaptersDeserialize( + Id id, + IsarReader reader, + List offsets, + Map> allOffsets, +) { + final object = ModelChapters( + dateUpload: reader.readStringOrNull(offsets[0]), + id: id, + isBookmarked: reader.readBoolOrNull(offsets[1]), + isRead: reader.readBoolOrNull(offsets[2]), + lastPageRead: reader.readStringOrNull(offsets[3]), + mangaId: reader.readLongOrNull(offsets[4]), + name: reader.readStringOrNull(offsets[5]), + scanlator: reader.readStringOrNull(offsets[6]), + url: reader.readStringOrNull(offsets[7]), + ); + return object; +} + +P _modelChaptersDeserializeProp

( + IsarReader reader, + int propertyId, + int offset, + Map> allOffsets, +) { + switch (propertyId) { + case 0: + return (reader.readStringOrNull(offset)) as P; + case 1: + return (reader.readBoolOrNull(offset)) as P; + case 2: + return (reader.readBoolOrNull(offset)) as P; + case 3: + return (reader.readStringOrNull(offset)) as P; + case 4: + return (reader.readLongOrNull(offset)) as P; + case 5: + return (reader.readStringOrNull(offset)) as P; + case 6: + return (reader.readStringOrNull(offset)) as P; + case 7: + return (reader.readStringOrNull(offset)) as P; + default: + throw IsarError('Unknown property with id $propertyId'); + } +} + +Id _modelChaptersGetId(ModelChapters object) { + return object.id ?? Isar.autoIncrement; +} + +List> _modelChaptersGetLinks(ModelChapters object) { + return [object.manga]; +} + +void _modelChaptersAttach( + IsarCollection col, Id id, ModelChapters object) { + object.id = id; + object.manga.attach(col, col.isar.collection(), r'manga', id); +} + +extension ModelChaptersQueryWhereSort + on QueryBuilder { + QueryBuilder anyId() { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(const IdWhereClause.any()); + }); + } +} + +extension ModelChaptersQueryWhere + on QueryBuilder { + QueryBuilder idEqualTo( + Id id) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(IdWhereClause.between( + lower: id, + upper: id, + )); + }); + } + + QueryBuilder 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 idGreaterThan( + Id id, + {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: include), + ); + }); + } + + QueryBuilder idLessThan( + Id id, + {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: include), + ); + }); + } + + QueryBuilder 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 ModelChaptersQueryFilter + on QueryBuilder { + QueryBuilder + dateUploadIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'dateUpload', + )); + }); + } + + QueryBuilder + dateUploadIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'dateUpload', + )); + }); + } + + QueryBuilder + dateUploadEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'dateUpload', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + dateUploadGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'dateUpload', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + dateUploadLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'dateUpload', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + dateUploadBetween( + 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'dateUpload', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + dateUploadStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'dateUpload', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + dateUploadEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'dateUpload', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + dateUploadContains(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'dateUpload', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + dateUploadMatches(String pattern, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'dateUpload', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + dateUploadIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'dateUpload', + value: '', + )); + }); + } + + QueryBuilder + dateUploadIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'dateUpload', + value: '', + )); + }); + } + + QueryBuilder idIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'id', + )); + }); + } + + QueryBuilder + idIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'id', + )); + }); + } + + QueryBuilder idEqualTo( + Id? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'id', + value: value, + )); + }); + } + + QueryBuilder + idGreaterThan( + Id? value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idLessThan( + Id? value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'id', + value: value, + )); + }); + } + + QueryBuilder 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 + isBookmarkedIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'isBookmarked', + )); + }); + } + + QueryBuilder + isBookmarkedIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'isBookmarked', + )); + }); + } + + QueryBuilder + isBookmarkedEqualTo(bool? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'isBookmarked', + value: value, + )); + }); + } + + QueryBuilder + isReadIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'isRead', + )); + }); + } + + QueryBuilder + isReadIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'isRead', + )); + }); + } + + QueryBuilder + isReadEqualTo(bool? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'isRead', + value: value, + )); + }); + } + + QueryBuilder + lastPageReadIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'lastPageRead', + )); + }); + } + + QueryBuilder + lastPageReadIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'lastPageRead', + )); + }); + } + + QueryBuilder + lastPageReadEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'lastPageRead', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + lastPageReadGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'lastPageRead', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + lastPageReadLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'lastPageRead', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + lastPageReadBetween( + 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'lastPageRead', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + lastPageReadStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'lastPageRead', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + lastPageReadEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'lastPageRead', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + lastPageReadContains(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'lastPageRead', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + lastPageReadMatches(String pattern, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'lastPageRead', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + lastPageReadIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'lastPageRead', + value: '', + )); + }); + } + + QueryBuilder + lastPageReadIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'lastPageRead', + value: '', + )); + }); + } + + QueryBuilder + mangaIdIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'mangaId', + )); + }); + } + + QueryBuilder + mangaIdIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'mangaId', + )); + }); + } + + QueryBuilder + mangaIdEqualTo(int? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'mangaId', + value: value, + )); + }); + } + + QueryBuilder + mangaIdGreaterThan( + int? value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'mangaId', + value: value, + )); + }); + } + + QueryBuilder + mangaIdLessThan( + int? value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'mangaId', + value: value, + )); + }); + } + + QueryBuilder + mangaIdBetween( + int? lower, + int? upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'mangaId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + )); + }); + } + + QueryBuilder + nameIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'name', + )); + }); + } + + QueryBuilder + nameIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'name', + )); + }); + } + + QueryBuilder nameEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + nameGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + nameLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameBetween( + 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'name', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + nameStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + nameEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + nameContains(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameMatches( + String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'name', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + nameIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'name', + value: '', + )); + }); + } + + QueryBuilder + nameIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'name', + value: '', + )); + }); + } + + QueryBuilder + scanlatorIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'scanlator', + )); + }); + } + + QueryBuilder + scanlatorIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'scanlator', + )); + }); + } + + QueryBuilder + scanlatorEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'scanlator', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + scanlatorGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'scanlator', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + scanlatorLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'scanlator', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + scanlatorBetween( + 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'scanlator', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + scanlatorStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'scanlator', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + scanlatorEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'scanlator', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + scanlatorContains(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'scanlator', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + scanlatorMatches(String pattern, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'scanlator', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + scanlatorIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'scanlator', + value: '', + )); + }); + } + + QueryBuilder + scanlatorIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'scanlator', + value: '', + )); + }); + } + + QueryBuilder + urlIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'url', + )); + }); + } + + QueryBuilder + urlIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'url', + )); + }); + } + + QueryBuilder urlEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'url', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + urlGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'url', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder urlLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'url', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder urlBetween( + 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'url', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + urlStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'url', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder urlEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'url', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder urlContains( + String value, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'url', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder urlMatches( + String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'url', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + urlIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'url', + value: '', + )); + }); + } + + QueryBuilder + urlIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'url', + value: '', + )); + }); + } +} + +extension ModelChaptersQueryObject + on QueryBuilder {} + +extension ModelChaptersQueryLinks + on QueryBuilder { + QueryBuilder manga( + FilterQuery q) { + return QueryBuilder.apply(this, (query) { + return query.link(q, r'manga'); + }); + } + + QueryBuilder + mangaIsNull() { + return QueryBuilder.apply(this, (query) { + return query.linkLength(r'manga', 0, true, 0, true); + }); + } +} + +extension ModelChaptersQuerySortBy + on QueryBuilder { + QueryBuilder sortByDateUpload() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'dateUpload', Sort.asc); + }); + } + + QueryBuilder + sortByDateUploadDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'dateUpload', Sort.desc); + }); + } + + QueryBuilder + sortByIsBookmarked() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'isBookmarked', Sort.asc); + }); + } + + QueryBuilder + sortByIsBookmarkedDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'isBookmarked', Sort.desc); + }); + } + + QueryBuilder sortByIsRead() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'isRead', Sort.asc); + }); + } + + QueryBuilder sortByIsReadDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'isRead', Sort.desc); + }); + } + + QueryBuilder + sortByLastPageRead() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'lastPageRead', Sort.asc); + }); + } + + QueryBuilder + sortByLastPageReadDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'lastPageRead', Sort.desc); + }); + } + + QueryBuilder sortByMangaId() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'mangaId', Sort.asc); + }); + } + + QueryBuilder sortByMangaIdDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'mangaId', Sort.desc); + }); + } + + QueryBuilder sortByName() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'name', Sort.asc); + }); + } + + QueryBuilder sortByNameDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'name', Sort.desc); + }); + } + + QueryBuilder sortByScanlator() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'scanlator', Sort.asc); + }); + } + + QueryBuilder + sortByScanlatorDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'scanlator', Sort.desc); + }); + } + + QueryBuilder sortByUrl() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'url', Sort.asc); + }); + } + + QueryBuilder sortByUrlDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'url', Sort.desc); + }); + } +} + +extension ModelChaptersQuerySortThenBy + on QueryBuilder { + QueryBuilder thenByDateUpload() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'dateUpload', Sort.asc); + }); + } + + QueryBuilder + thenByDateUploadDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'dateUpload', Sort.desc); + }); + } + + QueryBuilder thenById() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'id', Sort.asc); + }); + } + + QueryBuilder thenByIdDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'id', Sort.desc); + }); + } + + QueryBuilder + thenByIsBookmarked() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'isBookmarked', Sort.asc); + }); + } + + QueryBuilder + thenByIsBookmarkedDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'isBookmarked', Sort.desc); + }); + } + + QueryBuilder thenByIsRead() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'isRead', Sort.asc); + }); + } + + QueryBuilder thenByIsReadDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'isRead', Sort.desc); + }); + } + + QueryBuilder + thenByLastPageRead() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'lastPageRead', Sort.asc); + }); + } + + QueryBuilder + thenByLastPageReadDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'lastPageRead', Sort.desc); + }); + } + + QueryBuilder thenByMangaId() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'mangaId', Sort.asc); + }); + } + + QueryBuilder thenByMangaIdDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'mangaId', Sort.desc); + }); + } + + QueryBuilder thenByName() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'name', Sort.asc); + }); + } + + QueryBuilder thenByNameDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'name', Sort.desc); + }); + } + + QueryBuilder thenByScanlator() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'scanlator', Sort.asc); + }); + } + + QueryBuilder + thenByScanlatorDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'scanlator', Sort.desc); + }); + } + + QueryBuilder thenByUrl() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'url', Sort.asc); + }); + } + + QueryBuilder thenByUrlDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'url', Sort.desc); + }); + } +} + +extension ModelChaptersQueryWhereDistinct + on QueryBuilder { + QueryBuilder distinctByDateUpload( + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'dateUpload', caseSensitive: caseSensitive); + }); + } + + QueryBuilder + distinctByIsBookmarked() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'isBookmarked'); + }); + } + + QueryBuilder distinctByIsRead() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'isRead'); + }); + } + + QueryBuilder distinctByLastPageRead( + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'lastPageRead', caseSensitive: caseSensitive); + }); + } + + QueryBuilder distinctByMangaId() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'mangaId'); + }); + } + + QueryBuilder distinctByName( + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'name', caseSensitive: caseSensitive); + }); + } + + QueryBuilder distinctByScanlator( + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'scanlator', caseSensitive: caseSensitive); + }); + } + + QueryBuilder distinctByUrl( + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'url', caseSensitive: caseSensitive); + }); + } +} + +extension ModelChaptersQueryProperty + on QueryBuilder { + QueryBuilder idProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'id'); + }); + } + + QueryBuilder dateUploadProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'dateUpload'); + }); + } + + QueryBuilder isBookmarkedProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'isBookmarked'); + }); + } + + QueryBuilder isReadProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'isRead'); + }); + } + + QueryBuilder + lastPageReadProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'lastPageRead'); + }); + } + + QueryBuilder mangaIdProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'mangaId'); + }); + } + + QueryBuilder nameProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'name'); + }); + } + + QueryBuilder scanlatorProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'scanlator'); + }); + } + + QueryBuilder urlProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'url'); + }); } - - @override - int get hashCode => typeId.hashCode; - - @override - bool operator ==(Object other) => - identical(this, other) || - other is ModelChaptersAdapter && - runtimeType == other.runtimeType && - typeId == other.typeId; } diff --git a/lib/providers/hive_provider.dart b/lib/providers/hive_provider.dart index 57562b48..40db5c1c 100644 --- a/lib/providers/hive_provider.dart +++ b/lib/providers/hive_provider.dart @@ -1,28 +1,30 @@ +import 'dart:io'; + import 'package:hive_flutter/hive_flutter.dart'; +import 'package:isar/isar.dart'; import 'package:mangayomi/models/categories.dart'; import 'package:mangayomi/utils/constant.dart'; -import 'package:mangayomi/models/manga_history.dart'; -import 'package:mangayomi/models/model_manga.dart'; import 'package:mangayomi/source/source_model.dart'; -import 'package:mangayomi/views/manga/download/download_model.dart'; +import 'package:mangayomi/views/manga/download/model/download_model.dart'; import 'package:mangayomi/views/manga/reader/providers/reader_controller_provider.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; + part 'hive_provider.g.dart'; -@riverpod -Box hiveBoxManga(HiveBoxMangaRef ref) { - return Hive.box(HiveConstant.hiveBoxManga); -} +// @riverpod +// Box hiveBoxManga(HiveBoxMangaRef ref) { +// return Hive.box(HiveConstant.hiveBoxManga); +// } @riverpod Box hiveBoxMangaInfo(HiveBoxMangaInfoRef ref) { return Hive.box(HiveConstant.hiveBoxMangaInfo); } -@riverpod -Box hiveBoxMangaHistory(HiveBoxMangaHistoryRef ref) { - return Hive.box(HiveConstant.hiveBoxMangaHistory); -} +// @riverpod +// Box hiveBoxMangaHistory(HiveBoxMangaHistoryRef ref) { +// return Hive.box(HiveConstant.hiveBoxMangaHistory); +// } @riverpod Box hiveBoxReaderMode(HiveBoxReaderModeRef ref) { @@ -53,3 +55,4 @@ Box hiveBoxSettings(HiveBoxSettingsRef ref) { Box hiveBoxCategories(HiveBoxCategoriesRef ref) { return Hive.box(HiveConstant.hiveBoxCategories); } + diff --git a/lib/providers/hive_provider.g.dart b/lib/providers/hive_provider.g.dart index fa6aa8a1..b1f1c65f 100644 --- a/lib/providers/hive_provider.g.dart +++ b/lib/providers/hive_provider.g.dart @@ -6,20 +6,6 @@ part of 'hive_provider.dart'; // RiverpodGenerator // ************************************************************************** -String _$hiveBoxMangaHash() => r'63b8c649d7ac482b84fafa635626249294d4f92d'; - -/// See also [hiveBoxManga]. -@ProviderFor(hiveBoxManga) -final hiveBoxMangaProvider = AutoDisposeProvider>.internal( - hiveBoxManga, - name: r'hiveBoxMangaProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') ? null : _$hiveBoxMangaHash, - dependencies: null, - allTransitiveDependencies: null, -); - -typedef HiveBoxMangaRef = AutoDisposeProviderRef>; String _$hiveBoxMangaInfoHash() => r'638c65c996c731a9764acc5911f9b0ec75b60273'; /// See also [hiveBoxMangaInfo]. @@ -35,23 +21,6 @@ final hiveBoxMangaInfoProvider = AutoDisposeProvider>.internal( ); typedef HiveBoxMangaInfoRef = AutoDisposeProviderRef>; -String _$hiveBoxMangaHistoryHash() => - r'dd5c7a3cd8bfceb7b577c56f5ef8755914416c1e'; - -/// See also [hiveBoxMangaHistory]. -@ProviderFor(hiveBoxMangaHistory) -final hiveBoxMangaHistoryProvider = - AutoDisposeProvider>.internal( - hiveBoxMangaHistory, - name: r'hiveBoxMangaHistoryProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$hiveBoxMangaHistoryHash, - dependencies: null, - allTransitiveDependencies: null, -); - -typedef HiveBoxMangaHistoryRef = AutoDisposeProviderRef>; String _$hiveBoxReaderModeHash() => r'fabc2f9e6b46c1ba0f1965630ff91f0bdccfeb99'; /// See also [hiveBoxReaderMode]. diff --git a/lib/providers/storage_provider.dart b/lib/providers/storage_provider.dart index 70b43c6f..e3bed4e4 100644 --- a/lib/providers/storage_provider.dart +++ b/lib/providers/storage_provider.dart @@ -36,12 +36,12 @@ class StorageProvider { Future getMangaChapterDirectory( ModelManga modelManga, index) async { - String scanlator = modelManga.chapters![index].scanlator!.isNotEmpty - ? "${modelManga.chapters![index].scanlator!.replaceAll(RegExp(r'[^a-zA-Z0-9 .()\-\s]'), '_')}_" + String scanlator = modelManga.chapters.toList()[index].scanlator!.isNotEmpty + ? "${modelManga.chapters.toList()[index].scanlator!.replaceAll(RegExp(r'[^a-zA-Z0-9 .()\-\s]'), '_')}_" : ""; final dir = await getDirectory(); return Directory( - "${dir!.path}/downloads/${modelManga.source} (${modelManga.lang!.toUpperCase()})/${modelManga.name!.replaceAll(RegExp(r'[^a-zA-Z0-9 .()\-\s]'), '_')}/$scanlator${modelManga.chapters![index].name!.replaceAll(RegExp(r'[^a-zA-Z0-9 .()\-\s]'), '_')}/"); + "${dir!.path}/downloads/${modelManga.source} (${modelManga.lang!.toUpperCase()})/${modelManga.name!.replaceAll(RegExp(r'[^a-zA-Z0-9 .()\-\s]'), '_')}/$scanlator${modelManga.chapters.toList()[index].name!.replaceAll(RegExp(r'[^a-zA-Z0-9 .()\-\s]'), '_')}/"); } Future getMangaMainDirectory(ModelManga modelManga, index) async { diff --git a/lib/router/router.dart b/lib/router/router.dart index eb7abad7..58d8aa26 100644 --- a/lib/router/router.dart +++ b/lib/router/router.dart @@ -106,23 +106,19 @@ class AsyncRouterNotifier extends ChangeNotifier { GoRoute( path: '/manga-reader/detail', builder: (context, state) { - ModelManga? model; - - model = state.extra as ModelManga; + int idManga = state.extra as int; return MangaReaderDetail( - modelManga: model, + idManga: idManga, ); }, pageBuilder: (context, state) { - ModelManga? model; - - model = state.extra as ModelManga; + int idManga = state.extra as int; return CustomTransition( key: state.pageKey, child: MangaReaderDetail( - modelManga: model, + idManga: idManga, )); }), GoRoute( diff --git a/lib/services/get_manga_chapter_url.dart b/lib/services/get_manga_chapter_url.dart index 338d8d9a..fef9b1de 100644 --- a/lib/services/get_manga_chapter_url.dart +++ b/lib/services/get_manga_chapter_url.dart @@ -84,7 +84,7 @@ Future getMangaChapterUrl( List isLocaleList = []; String source = modelManga.source!.toLowerCase(); List pagesUrl = ref.watch(hiveBoxMangaInfoProvider).get( - "${modelManga.lang}-${modelManga.source}/${modelManga.name}/${modelManga.chapters![index].name}-pageurl", + "${modelManga.lang}-${modelManga.source}/${modelManga.name}/${modelManga.chapters.toList()[index].name}-pageurl", defaultValue: []); final incognitoMode = ref.watch(incognitoModeStateProvider); path = await StorageProvider().getMangaChapterDirectory(modelManga, index); @@ -98,7 +98,7 @@ Future getMangaChapterUrl( /********/ else if (getWpMangTypeSource(source) == TypeSource.comick) { String mangaId = - modelManga.chapters![index].url!.split('/').last.split('-').first; + modelManga.chapters.toList()[index].url!.split('/').last.split('-').first; final response = await httpGet( url: 'https://api.comick.fun/chapter/$mangaId?tachiyomi=true', @@ -117,7 +117,7 @@ Future getMangaChapterUrl( else if (getWpMangTypeSource(source) == TypeSource.mangathemesia) { final dom = await httpGet( useUserAgent: true, - url: modelManga.chapters![index].url!, + url: modelManga.chapters.toList()[index].url!, source: source, resDom: true) as Document?; if (dom!.querySelectorAll('#readerarea').isNotEmpty) { @@ -165,7 +165,7 @@ Future getMangaChapterUrl( else if (source == 'mangakawaii') { final response = await httpGet( - url: modelManga.chapters![index].url!, + url: modelManga.chapters.toList()[index].url!, source: source, resDom: false) as String?; var chapterSlug = RegExp("""var chapter_slug = "([^"]*)";""") @@ -193,7 +193,7 @@ Future getMangaChapterUrl( else if (getWpMangTypeSource(source) == TypeSource.mmrcms) { final dom = await httpGet( useUserAgent: true, - url: modelManga.chapters![index].url!, + url: modelManga.chapters.toList()[index].url!, source: source, resDom: true) as Document?; if (dom!.querySelectorAll('#all > .img-responsive').isNotEmpty) { @@ -242,7 +242,7 @@ Future getMangaChapterUrl( return secretKeyResultScript; } - var link = "http://www.mangahere.cc${modelManga.chapters![index].url!}"; + var link = "http://www.mangahere.cc${modelManga.chapters.toList()[index].url!}"; final response = await httpGet(url: link, source: source, resDom: false) as String?; @@ -329,7 +329,7 @@ Future getMangaChapterUrl( } else if (source == 'japscan') { final response = await httpGet( useUserAgent: true, - url: modelManga.chapters![index].url!, + url: modelManga.chapters.toList()[index].url!, source: source, resDom: false) as String?; RegExp regex = RegExp(r'