Adding opening dates and amount

This commit is contained in:
2025-02-04 23:23:41 +01:00
parent f26bd9846a
commit 39c4ab9102
2 changed files with 16 additions and 9 deletions

View File

@@ -6,7 +6,7 @@ from fastapi_pagination import Page
from fastapi_pagination.ext.sqlmodel import paginate from fastapi_pagination.ext.sqlmodel import paginate
from account.account_routes import AccountFilters 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 account.models import Account
from db import SessionDep from db import SessionDep
from user.manager import get_current_user from user.manager import get_current_user
@@ -14,37 +14,37 @@ from user.manager import get_current_user
router = APIRouter() router = APIRouter()
@router.post("") @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) result = Account.create(category, session)
return result return result
@router.get("") @router.get("")
def read_categories(session: SessionDep, def read_categories(session: SessionDep,
filters: AccountFilters = FilterDepends(AccountFilters), 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)) return paginate(session, Account.list_categories(filters))
@router.get("expenses") @router.get("expenses")
def read_expenses(session: SessionDep, def read_expenses(session: SessionDep,
filters: AccountFilters = FilterDepends(AccountFilters), 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)) return paginate(session, Account.list_expenses(filters))
@router.get("incomes") @router.get("incomes")
def read_incomes(session: SessionDep, def read_incomes(session: SessionDep,
filters: AccountFilters = FilterDepends(AccountFilters), 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)) return paginate(session, Account.list_incomes(filters))
@router.get("/{category_id}") @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) category = Account.get(session, category_id)
if not category: if not category:
raise HTTPException(status_code=404, detail="Category not found") raise HTTPException(status_code=404, detail="Category not found")
return category return category
@router.put("/{category_id}") @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) db_category = Account.get(session, category_id)
if not db_category: if not db_category:
raise HTTPException(status_code=404, detail="Category not found") raise HTTPException(status_code=404, detail="Category not found")

View File

@@ -1,3 +1,5 @@
from datetime import date
from decimal import Decimal
from typing import Optional from typing import Optional
from uuid import UUID, uuid4 from uuid import UUID, uuid4
@@ -7,7 +9,6 @@ from pydantic import Field as PydField
from account.enums import Asset, Liability, CategoryFamily from account.enums import Asset, Liability, CategoryFamily
class AccountBase(SQLModel): class AccountBase(SQLModel):
name: str = Field(index=True) name: str = Field(index=True)
parent_account_id: Optional[UUID] = Field(default=None, foreign_key="account.id") parent_account_id: Optional[UUID] = Field(default=None, foreign_key="account.id")
@@ -19,11 +20,14 @@ class AccountBaseId(AccountBase):
path: str = Field(index=True) path: str = Field(index=True)
class AccountRead(AccountBaseId): class AccountRead(AccountBaseId):
pass opening_date: date = Field()
opening_balance: Decimal = Field(decimal_places=2, default=0)
class BaseAccountWrite(AccountBase): class BaseAccountWrite(AccountBase):
path: SkipJsonSchema[str] = Field(default="") path: SkipJsonSchema[str] = Field(default="")
family: 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): class AccountWrite(BaseAccountWrite):
type: Asset | Liability = Field() type: Asset | Liability = Field()
@@ -43,6 +47,9 @@ class AccountCreate(AccountWrite):
class AccountUpdate(AccountWrite): class AccountUpdate(AccountWrite):
pass pass
class CategoryRead(AccountBaseId):
pass
class CategoryWrite(BaseAccountWrite): class CategoryWrite(BaseAccountWrite):
type: CategoryFamily = Field() type: CategoryFamily = Field()