From 39c4ab9102f2d8096bd0e715465d6a330dfd6374 Mon Sep 17 00:00:00 2001 From: ewandor Date: Tue, 4 Feb 2025 23:23:41 +0100 Subject: [PATCH] Adding opening dates and amount --- api/app/account/category_routes.py | 14 +++++++------- api/app/account/schemas.py | 11 +++++++++-- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/api/app/account/category_routes.py b/api/app/account/category_routes.py index 706a5d7..d6834b9 100644 --- a/api/app/account/category_routes.py +++ b/api/app/account/category_routes.py @@ -6,7 +6,7 @@ from fastapi_pagination import Page from fastapi_pagination.ext.sqlmodel import paginate from account.account_routes import AccountFilters -from account.schemas import AccountRead, CategoryCreate, CategoryUpdate +from account.schemas import CategoryRead, CategoryCreate, CategoryUpdate from account.models import Account from db import SessionDep from user.manager import get_current_user @@ -14,37 +14,37 @@ from user.manager import get_current_user router = APIRouter() @router.post("") -def create_category(category: CategoryCreate, session: SessionDep, current_user=Depends(get_current_user)) -> AccountRead: +def create_category(category: CategoryCreate, session: SessionDep, current_user=Depends(get_current_user)) -> CategoryRead: result = Account.create(category, session) return result @router.get("") def read_categories(session: SessionDep, filters: AccountFilters = FilterDepends(AccountFilters), - current_user=Depends(get_current_user)) -> Page[AccountRead]: + current_user=Depends(get_current_user)) -> Page[CategoryRead]: return paginate(session, Account.list_categories(filters)) @router.get("expenses") def read_expenses(session: SessionDep, filters: AccountFilters = FilterDepends(AccountFilters), - current_user=Depends(get_current_user)) -> Page[AccountRead]: + current_user=Depends(get_current_user)) -> Page[CategoryRead]: return paginate(session, Account.list_expenses(filters)) @router.get("incomes") def read_incomes(session: SessionDep, filters: AccountFilters = FilterDepends(AccountFilters), - current_user=Depends(get_current_user)) -> Page[AccountRead]: + current_user=Depends(get_current_user)) -> Page[CategoryRead]: return paginate(session, Account.list_incomes(filters)) @router.get("/{category_id}") -def read_category(category_id: UUID, session: SessionDep, current_user=Depends(get_current_user)) -> AccountRead: +def read_category(category_id: UUID, session: SessionDep, current_user=Depends(get_current_user)) -> CategoryRead: category = Account.get(session, category_id) if not category: raise HTTPException(status_code=404, detail="Category not found") return category @router.put("/{category_id}") -def update_category(category_id: UUID, category: CategoryUpdate, session: SessionDep, current_user=Depends(get_current_user)) -> AccountRead: +def update_category(category_id: UUID, category: CategoryUpdate, session: SessionDep, current_user=Depends(get_current_user)) -> CategoryRead: db_category = Account.get(session, category_id) if not db_category: raise HTTPException(status_code=404, detail="Category not found") diff --git a/api/app/account/schemas.py b/api/app/account/schemas.py index d134fed..2506bde 100644 --- a/api/app/account/schemas.py +++ b/api/app/account/schemas.py @@ -1,3 +1,5 @@ +from datetime import date +from decimal import Decimal from typing import Optional from uuid import UUID, uuid4 @@ -7,7 +9,6 @@ from pydantic import Field as PydField from account.enums import Asset, Liability, CategoryFamily - class AccountBase(SQLModel): name: str = Field(index=True) parent_account_id: Optional[UUID] = Field(default=None, foreign_key="account.id") @@ -19,11 +20,14 @@ class AccountBaseId(AccountBase): path: str = Field(index=True) class AccountRead(AccountBaseId): - pass + opening_date: date = Field() + opening_balance: Decimal = Field(decimal_places=2, default=0) class BaseAccountWrite(AccountBase): path: SkipJsonSchema[str] = Field(default="") family: SkipJsonSchema[str] = Field(default="") + opening_date: date = Field() + opening_balance: Decimal = Field(decimal_places=2, default=0) class AccountWrite(BaseAccountWrite): type: Asset | Liability = Field() @@ -43,6 +47,9 @@ class AccountCreate(AccountWrite): class AccountUpdate(AccountWrite): pass +class CategoryRead(AccountBaseId): + pass + class CategoryWrite(BaseAccountWrite): type: CategoryFamily = Field()