mirror of
https://github.com/kodjodevf/mangayomi.git
synced 2026-01-11 22:40:36 +00:00
55 lines
1.8 KiB
Dart
55 lines
1.8 KiB
Dart
import 'package:isar/isar.dart';
|
|
import 'package:mangayomi/main.dart';
|
|
import 'package:mangayomi/models/chapter.dart';
|
|
import 'package:mangayomi/models/download.dart';
|
|
import 'package:mangayomi/models/history.dart';
|
|
import 'package:mangayomi/models/manga.dart';
|
|
import 'package:mangayomi/models/track.dart';
|
|
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
part 'migration.g.dart';
|
|
|
|
@riverpod
|
|
Future<void> migration(Ref ref) async {
|
|
final chapters =
|
|
isar.chapters.filter().idIsNotNull().mangaIdIsNull().findAllSync();
|
|
final downloads =
|
|
isar.downloads.filter().idIsNotNull().mangaIdIsNull().findAllSync();
|
|
final histories = isar.historys
|
|
.filter()
|
|
.idIsNotNull()
|
|
.chapterIdIsNull()
|
|
.or()
|
|
.idIsNotNull()
|
|
.findAllSync();
|
|
final tracks = isar.tracks.filter().idIsNotNull().findAllSync();
|
|
|
|
isar.writeTxnSync(() {
|
|
//mangaId in chapter
|
|
for (var chapter in chapters) {
|
|
final mangaId = chapter.manga.value?.id;
|
|
isar.chapters.putSync(chapter..mangaId = mangaId);
|
|
}
|
|
//mangaId in Download
|
|
for (var download in downloads) {
|
|
final mangaId = download.chapter.value?.manga.value?.id;
|
|
isar.downloads.putSync(download..mangaId = mangaId);
|
|
}
|
|
//chapterId and isManga in History
|
|
for (var history in histories) {
|
|
final chapterId = history.chapter.value?.id;
|
|
final itemType =
|
|
history.chapter.value?.manga.value?.itemType ?? ItemType.manga;
|
|
isar.historys.putSync(history
|
|
..chapterId = chapterId
|
|
..itemType = itemType);
|
|
}
|
|
// isManga in Track
|
|
for (var track in tracks) {
|
|
final isManga =
|
|
(isar.mangas.getSync(track.mangaId!)?.itemType ?? ItemType.manga) ==
|
|
ItemType.manga;
|
|
isar.tracks.putSync(track..isManga = isManga);
|
|
}
|
|
});
|
|
}
|