mangayomi-mirror/lib/modules/main_view/providers/migration.dart
Moustapha Kodjo Amadou 80efee40d1 dart format
2025-05-30 17:43:42 +01:00

73 lines
1.9 KiB
Dart

import 'package:isar/isar.dart';
import 'package:mangayomi/main.dart';
import 'package:mangayomi/models/category.dart';
import 'package:mangayomi/models/history.dart';
import 'package:mangayomi/models/manga.dart';
import 'package:mangayomi/models/source.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 mangas = isar.mangas
.filter()
.idIsNotNull()
.isMangaIsNotNull()
.findAllSync();
final categories = isar.categorys
.filter()
.idIsNotNull()
.forMangaIsNotNull()
.findAllSync();
final histories = isar.historys
.filter()
.idIsNotNull()
.chapterIdIsNull()
.isMangaIsNotNull()
.or()
.idIsNotNull()
.isMangaIsNotNull()
.findAllSync();
final sources = isar.sources
.filter()
.idIsNotNull()
.isMangaIsNotNull()
.findAllSync();
final tracks = isar.tracks
.filter()
.idIsNotNull()
.isMangaIsNotNull()
.findAllSync();
isar.writeTxnSync(() {
for (var history in histories) {
isar.historys.putSync(
history..itemType = _convertToItemType(history.isManga!),
);
}
for (var source in sources) {
isar.sources.putSync(
source..itemType = _convertToItemType(source.isManga!),
);
}
for (var track in tracks) {
isar.tracks.putSync(track..itemType = _convertToItemType(track.isManga!));
}
for (var manga in mangas) {
isar.mangas.putSync(manga..itemType = _convertToItemType(manga.isManga!));
}
for (var category in categories) {
isar.categorys.putSync(
category..forItemType = _convertToItemType(category.forManga!),
);
}
});
}
ItemType _convertToItemType(bool isManga) {
return isManga ? ItemType.manga : ItemType.anime;
}