refactored sync repo

This commit is contained in:
Fabian Freund
2024-06-19 21:07:37 +02:00
parent 1c5ff5bbc3
commit 2f6ae2684d
2 changed files with 14 additions and 35 deletions
@@ -45,9 +45,8 @@ class BangSyncRepository extends _$BangSyncRepository {
);
}
Future<Result<void>> _syncBangGroup(
Future<Result<void>> syncBangGroup(
BangGroup group,
Uri url,
Duration? syncInterval,
) async {
try {
@@ -59,7 +58,7 @@ class BangSyncRepository extends _$BangSyncRepository {
final result = await _fetchAndSync(
sourceService: ref.read(bangSourceServiceProvider.notifier),
db: db,
url: url,
url: Uri.parse(group.url),
group: group,
syncInterval: syncInterval,
);
@@ -84,40 +83,20 @@ class BangSyncRepository extends _$BangSyncRepository {
return _db.syncDao.lastSyncOfGroup(group).watchSingleOrNull();
}
Future<Result<void>> syncGeneralBangs({Duration? syncInterval}) =>
_syncBangGroup(
BangGroup.general,
Uri.parse(BangGroup.general.url),
syncInterval,
);
Future<Result<void>> syncKagiBangs({Duration? syncInterval}) =>
_syncBangGroup(
BangGroup.kagi,
Uri.parse(BangGroup.kagi.url),
syncInterval,
);
Future<Result<void>> syncAssistantBangs({Duration? syncInterval}) =>
_syncBangGroup(
BangGroup.assistant,
Uri.parse(BangGroup.assistant.url),
syncInterval,
);
Future<Map<BangGroup, Result<void>>> syncAllBangGroups({
Future<Map<BangGroup, Result<void>>> syncBangGroups({
Set<BangGroup>? groups,
Duration? syncInterval,
}) async {
//Run isolated operations
final generalSync = syncGeneralBangs(syncInterval: syncInterval);
final assistantSync = syncAssistantBangs(syncInterval: syncInterval);
final kagiSync = syncKagiBangs(syncInterval: syncInterval);
//Default to all sources
groups ??= BangGroup.values.toSet();
return {
BangGroup.general: await generalSync,
BangGroup.assistant: await assistantSync,
BangGroup.kagi: await kagiSync,
};
//Run isolated operations
final futures = groups.map(
(source) => syncBangGroup(source, syncInterval)
.then((result) => MapEntry(source, result)),
);
return Map.fromEntries(await Future.wait(futures));
}
@override
@@ -7,7 +7,7 @@ part of 'sync.dart';
// **************************************************************************
String _$bangSyncRepositoryHash() =>
r'865164c809e2f171a6b748d149780383d6e3483f';
r'1e6341c8daf25aaee61d158f94445564d4450a9e';
/// See also [BangSyncRepository].
@ProviderFor(BangSyncRepository)