feat: collection/playlist sync rules

This commit is contained in:
edde746
2026-04-19 17:45:03 +02:00
parent 6115c21b44
commit a715f4e26b
43 changed files with 1178 additions and 146 deletions
+17 -1
View File
@@ -17,7 +17,7 @@ class AppDatabase extends _$AppDatabase {
AppDatabase() : super(_openConnection());
@override
int get schemaVersion => 11;
int get schemaVersion => 12;
@override
MigrationStrategy get migration {
@@ -58,6 +58,14 @@ class AppDatabase extends _$AppDatabase {
appLogger.w('enabled column may already exist: $e');
}
}
if (from < 12) {
appLogger.i('Adding downloadFilter column to SyncRules (v12 migration)');
try {
await m.addColumn(syncRules, syncRules.downloadFilter);
} catch (e) {
appLogger.w('downloadFilter column may already exist: $e');
}
}
},
);
}
@@ -232,6 +240,7 @@ class AppDatabase extends _$AppDatabase {
required String targetType,
required int episodeCount,
int mediaIndex = 0,
String downloadFilter = 'unwatched',
}) async {
await into(syncRules).insertOnConflictUpdate(
SyncRulesCompanion.insert(
@@ -242,6 +251,7 @@ class AppDatabase extends _$AppDatabase {
episodeCount: episodeCount,
createdAt: DateTime.now().millisecondsSinceEpoch,
mediaIndex: Value(mediaIndex),
downloadFilter: Value(downloadFilter),
),
);
}
@@ -252,6 +262,12 @@ class AppDatabase extends _$AppDatabase {
)..where((t) => t.globalKey.equals(globalKey))).write(SyncRulesCompanion(episodeCount: Value(episodeCount)));
}
Future<void> updateSyncRuleFilter(String globalKey, String downloadFilter) async {
await (update(
syncRules,
)..where((t) => t.globalKey.equals(globalKey))).write(SyncRulesCompanion(downloadFilter: Value(downloadFilter)));
}
Future<void> updateSyncRuleEnabled(String globalKey, bool enabled) async {
await (update(
syncRules,