Adding opening dates and amount
This commit is contained in:
@@ -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")
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user