feat(meta): Implement manga tracking

This commit is contained in:
PapaTutuWawa committed 2023-02-04 12:48:57 +01:00
1 parent cd1291a192
commit 7af2277bb2
15 files changed
+883 -126

No files matched your search

+39
View File
@@ -1,7 +1,9 @@
import 'package:anitrack/src/data/anime.dart';
import 'package:anitrack/src/data/manga.dart';
import 'package:sqflite/sqflite.dart';
const animeTable = 'Anime';
const mangaTable = 'Manga';
Future<void> _createDatabase(Database db, int version) async {
await db.execute(
@@ -15,6 +17,18 @@ Future<void> _createDatabase(Database db, int version) async {
title TEXT NOT NULL
)''',
);
await db.execute(
'''
CREATE TABLE $mangaTable(
id TEXT NOT NULL PRIMARY KEY,
state INTEGER NOT NULL,
chaptersTotal INTEGER,
chaptersRead INTEGER NOT NULL,
volumesOwned INTEGER NOT NULL,
thumbnailUrl TEXT NOT NULL,
title TEXT NOT NULL
)''',
);
}
class DatabaseService {
@@ -36,6 +50,15 @@ class DatabaseService {
.map((Map<String, dynamic> anime) => AnimeTrackingData.fromJson(anime))
.toList();
}
Future<List<MangaTrackingData>> loadMangas() async {
final mangas = await _db.query(mangaTable);
return mangas
.cast<Map<String, dynamic>>()
.map((Map<String, dynamic> manga) => MangaTrackingData.fromJson(manga))
.toList();
}
Future<void> addAnime(AnimeTrackingData data) async {
await _db.insert(
@@ -52,4 +75,20 @@ class DatabaseService {
whereArgs: [data.id],
);
}
Future<void> addManga(MangaTrackingData data) async {
await _db.insert(
mangaTable,
data.toJson(),
);
}
Future<void> updateManga(MangaTrackingData data) async {
await _db.update(
mangaTable,
data.toJson(),
where: 'id = ?',
whereArgs: [data.id],
);
}
}