Allow deleting templates

This commit is contained in:
2025-05-11 15:40:12 +02:00
parent 058291fa80
commit 384aa4eb6f
10 changed files with 194 additions and 125 deletions

View File

@@ -15,4 +15,18 @@ class RecurringTransaction {
final template = IsarLink<TransactionTemplate>();
final account = IsarLink<Account>();
bool isDue(DateTime now) {
if (lastExecution == null) {
return true;
}
final expectedNextExecution = lastExecution!.add(Duration(days: days));
if (now.isAfter(expectedNextExecution)) {
return true;
}
return now.difference(expectedNextExecution).inDays.abs() <=
(days * 0.5).toInt();
}
}

View File

@@ -83,9 +83,7 @@ Stream<void> watchRecurringTransactions(Account account) {
Future<void> upsertAccount(Account account) async {
final db = GetIt.I.get<Isar>();
return db.writeTxn(() async {
print("Before account insert");
final id = await db.accounts.put(account);
print("After account insert: $id");
await db.accounts.put(account);
});
}
@@ -116,6 +114,14 @@ Future<void> upsertTransactionTemplate(TransactionTemplate template) async {
});
}
Future<void> deleteRecurringTransactionTemplate(RecurringTransaction template) {
final db = GetIt.I.get<Isar>();
return db.writeTxn(() async {
await db.transactionTemplates.delete(template.template.value!.id);
await db.recurringTransactions.delete(template.id);
});
}
Future<void> upsertRecurringTransaction(RecurringTransaction template) async {
final db = GetIt.I.get<Isar>();
return db.writeTxn(() async {
@@ -148,22 +154,24 @@ Stream<void> watchTransactionTemplates(Account account) {
.watchLazy(fireImmediately: true);
}
Future<List<TransactionTemplate>> getTransactionTemplates(
Account? account,
) async {
Future<void> deleteTransactionTemplate(TransactionTemplate template) {
final db = GetIt.I.get<Isar>();
return db.writeTxn(() async {
await db.transactionTemplates.delete(template.id);
});
}
Future<List<TransactionTemplate>> getTransactionTemplates(Account? account) {
if (account == null) {
return Future.value([]);
}
final a =
await GetIt.I
.get<Isar>()
.transactionTemplates
.filter()
.account((q) => q.idEqualTo(account.id))
.findAll();
return a;
return GetIt.I
.get<Isar>()
.transactionTemplates
.filter()
.account((q) => q.idEqualTo(account.id))
.findAll();
}
Stream<void> watchTransactions(Account account) {