feat(backend): implemented basic controller layer

This commit is contained in:
ribardej
2025-10-13 12:07:47 +02:00
parent 6c248039ac
commit 2f20fb12e4
6 changed files with 372 additions and 25 deletions

View File

@@ -0,0 +1,23 @@
from typing import Optional
from pydantic import BaseModel
try:
# Pydantic v2
from pydantic import ConfigDict # type: ignore
_HAS_V2 = True
except Exception: # pragma: no cover
_HAS_V2 = False
class CategoryBase(BaseModel):
name: str
description: Optional[str] = None
class CategoryCreate(CategoryBase):
pass
class CategoryRead(CategoryBase):
id: int
if _HAS_V2:
model_config = ConfigDict(from_attributes=True) # type: ignore
else: # Pydantic v1 fallback
class Config: # type: ignore
orm_mode = True

View File

@@ -0,0 +1,21 @@
from typing import List, Optional
from pydantic import BaseModel, Field
class TransactionBase(BaseModel):
amount: float = Field(..., gt=-1e18, lt=1e18)
description: Optional[str] = None
class TransactionCreate(TransactionBase):
category_ids: Optional[List[int]] = None
class TransactionUpdate(BaseModel):
amount: Optional[float] = Field(None, gt=-1e18, lt=1e18)
description: Optional[str] = None
category_ids: Optional[List[int]] = None
class TransactionRead(TransactionBase):
id: int
category_ids: List[int] = []
class Config:
from_attributes = True