summaryrefslogtreecommitdiff
path: root/gui/src/types/budgetMap.ts
blob: 5fa09f2eeb38b3364484de7daf95962df6e8b6a5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import { Budget, newBudgetFromDto } from "./budget";
import { Category } from "./category";

type BudgetMap<T extends { id: any }> = {
  [id in T["id"]]: Budget | null;
};

function newCategoryBudgetMapFromDto(dto: unknown): BudgetMap<Category> {
  return Object.fromEntries(
    (dto as { category_id: number; budget: unknown }[]).map(
      ({ category_id, budget }) => [category_id, newBudgetFromDto(budget)],
    ),
  );
}

export { type BudgetMap, newCategoryBudgetMapFromDto as newBudgetMapFromDto };