Files
CoPay/backend/app/models/transactions.py
T
2024-11-17 02:31:42 +03:00

43 lines
1.2 KiB
Python

from uuid import UUID
from uuid import uuid4
from sqlalchemy import BigInteger
from sqlalchemy import Column
from sqlalchemy import ForeignKey
from sqlmodel import Field
from sqlmodel import Relationship
from sqlmodel import SQLModel
from app.models.item import Item
from app.models.user import User
class BaseTransaction(SQLModel):
title: str = Field(nullable=False)
class Transaction(BaseTransaction, table=True):
id: UUID = Field(default_factory=uuid4, primary_key=True)
payer_id: int = Field(
sa_column=Column(BigInteger(), ForeignKey('user.id'))
)
payer: User = Relationship(back_populates='transactions')
event_id: UUID = Field(foreign_key='event.id')
event: 'Event' = Relationship(back_populates='transactions')
closed: bool = Field(nullable=False, default=False)
items: list['Item'] = Relationship(back_populates='transaction')
async def add_participant(self, participant: User):
self.participants.append(participant)
async def add_item(self, item: Item):
self.items.append(item)
class OutputTransaction(BaseTransaction):
id: UUID
payer: User
event_id: UUID
closed: bool
items: list['Item']