Version : 2025.11.22
This commit is contained in:
52
backend/models.py
Normal file
52
backend/models.py
Normal file
@@ -0,0 +1,52 @@
|
||||
from typing import List, Optional
|
||||
from sqlmodel import Field, Relationship, SQLModel
|
||||
from enum import Enum
|
||||
import uuid
|
||||
from datetime import datetime
|
||||
|
||||
class OperationType(str, Enum):
|
||||
INCOME = 'income'
|
||||
EXPENSE = 'expense'
|
||||
|
||||
class Association(SQLModel, table=True):
|
||||
id: str = Field(default_factory=lambda: str(uuid.uuid4()), primary_key=True)
|
||||
name: str
|
||||
password: str
|
||||
|
||||
balances: List["Balance"] = Relationship(back_populates="association")
|
||||
|
||||
class Balance(SQLModel, table=True):
|
||||
id: str = Field(default_factory=lambda: str(uuid.uuid4()), primary_key=True)
|
||||
name: str
|
||||
initialAmount: float
|
||||
association_id: Optional[str] = Field(default=None, foreign_key="association.id")
|
||||
|
||||
association: Optional[Association] = Relationship(back_populates="balances")
|
||||
operations: List["Operation"] = Relationship(back_populates="balance")
|
||||
position: int = Field(default=0)
|
||||
|
||||
class Operation(SQLModel, table=True):
|
||||
id: str = Field(default_factory=lambda: str(uuid.uuid4()), primary_key=True)
|
||||
name: str
|
||||
description: str
|
||||
group: str
|
||||
amount: float
|
||||
type: OperationType
|
||||
date: datetime
|
||||
invoice: Optional[str] = None
|
||||
balance_id: Optional[str] = Field(default=None, foreign_key="balance.id")
|
||||
|
||||
balance: Optional[Balance] = Relationship(back_populates="operations")
|
||||
|
||||
class BalanceRead(SQLModel):
|
||||
id: str
|
||||
name: str
|
||||
initialAmount: float
|
||||
position: int = 0
|
||||
operations: List[Operation] = []
|
||||
|
||||
class AssociationRead(SQLModel):
|
||||
id: str
|
||||
name: str
|
||||
balances: List[BalanceRead] = []
|
||||
operations: List[Operation] = []
|
||||
Reference in New Issue
Block a user