Make budgets work again

This commit is contained in:
2025-05-18 14:42:42 +02:00
parent 5dc474407c
commit 42b1bbd438
9 changed files with 3601 additions and 4917 deletions

View File

@@ -56,9 +56,8 @@ class Budgets extends Table {
class BudgetsDto {
final Budget budget;
final List<BudgetItemDto> budgetItems;
BudgetsDto({required this.budget, required this.budgetItems});
BudgetsDto({required this.budget});
}
class Loans extends Table {
@@ -373,6 +372,12 @@ class ExpenseCategoriesDao extends DatabaseAccessor<OkaneDatabase>
return select(expenseCategories).get();
}
Future<ExpenseCategory> upsertCategory(ExpenseCategoriesCompanion category) {
return into(
expenseCategories,
).insertReturning(category, mode: InsertMode.insertOrReplace);
}
}
@DriftAccessor(tables: [Budgets, BudgetItems])
@@ -391,11 +396,7 @@ class BudgetsDao extends DatabaseAccessor<OkaneDatabase>
.watch()
.map((rows) {
return rows.map((row) {
return BudgetsDto(
budget: row.readTable(budgets),
// TODO
budgetItems: List.empty(),
);
return BudgetsDto(budget: row.readTable(budgets));
}).toList();
});
}
@@ -405,20 +406,28 @@ class BudgetsDao extends DatabaseAccessor<OkaneDatabase>
return Future.value(List.empty());
}
return (select(budgets)..where((b) => b.accountId.equals(account.id)))
return (select(budgets)
..where((b) => b.accountId.equals(account.id))).get().then((rows) {
return rows.map((row) {
return BudgetsDto(budget: row);
}).toList();
});
}
Stream<List<BudgetItemDto>> watchBudgetItems(Budget budget) {
return (select(budgetItems)..where((b) => b.budgetId.equals(budget.id)))
.join([
leftOuterJoin(
budgetItems,
budgetItems.budgetId.equalsExp(budgets.id),
expenseCategories,
expenseCategories.id.equalsExp(budgetItems.expenseCategoryId),
),
])
.get()
.then((rows) {
.watch()
.map((rows) {
return rows.map((row) {
return BudgetsDto(
budget: row.readTable(budgets),
// TODO
budgetItems: List.empty(),
return BudgetItemDto(
expenseCategory: row.readTable(expenseCategories),
item: row.readTable(budgetItems),
);
}).toList();
});

File diff suppressed because it is too large Load Diff