import 'package:isar/isar.dart'; import 'package:mangayomi/models/chapter.dart'; part 'manga.g.dart'; @collection @Name("Manga") class Manga { Id? id; String? name; String? link; String? imageUrl; String? description; String? author; String? artist; @enumerated late Status status; bool? isManga; List? genre; bool? favorite; String? source; String? lang; int? dateAdded; int? lastUpdate; int? lastRead; List? categories; bool? isLocalArchive; List? customCoverImage; String? customCoverFromTracker; @Backlink(to: "manga") final chapters = IsarLinks(); Manga( {this.id = Isar.autoIncrement, required this.source, required this.author, required this.artist, this.favorite = false, required this.genre, required this.imageUrl, required this.lang, required this.link, required this.name, required this.status, required this.description, this.isManga = true, this.dateAdded, this.lastUpdate, this.categories, this.lastRead = 0, this.isLocalArchive = false, this.customCoverImage, this.customCoverFromTracker}); Manga.fromJson(Map json) { author = json['author']; artist = json['artist']; categories = json['categories']?.cast(); customCoverImage = json['customCoverImage']?.cast(); dateAdded = json['dateAdded']; description = json['description']; favorite = json['favorite']!; genre = json['genre']?.cast(); id = json['id']; imageUrl = json['imageUrl']; isLocalArchive = json['isLocalArchive']; isManga = json['isManga']; lang = json['lang']; lastRead = json['lastRead']; lastUpdate = json['lastUpdate']; link = json['link']; name = json['name']; source = json['source']; status = Status.values[json['status']]; customCoverFromTracker = json['customCoverFromTracker']; } Map toJson() => { 'author': author, 'artist': artist, 'categories': categories, 'customCoverImage': customCoverImage, 'dateAdded': dateAdded, 'description': description, 'favorite': favorite, 'genre': genre, 'id': id, 'imageUrl': imageUrl, 'isLocalArchive': isLocalArchive, 'isManga': isManga, 'lang': lang, 'lastRead': lastRead, 'lastUpdate': lastUpdate, 'link': link, 'name': name, 'source': source, 'status': status.index, 'customCoverFromTracker': customCoverFromTracker, }; } enum Status { ongoing, completed, canceled, unknown, onHiatus, publishingFinished }