47 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import datetime
 | 
						|
from typing import TYPE_CHECKING
 | 
						|
 | 
						|
from sqlalchemy import ForeignKey
 | 
						|
from sqlalchemy.orm import Mapped, mapped_column, relationship
 | 
						|
 | 
						|
from models import BaseModel
 | 
						|
 | 
						|
if TYPE_CHECKING:
 | 
						|
    from models import Card, CardGroup
 | 
						|
 | 
						|
 | 
						|
class CardBillRequest(BaseModel):
 | 
						|
    __tablename__ = 'card_bill_requests'
 | 
						|
 | 
						|
    card_id: Mapped[int] = mapped_column(
 | 
						|
        ForeignKey('cards.id'),
 | 
						|
        nullable=False,
 | 
						|
        primary_key=True,
 | 
						|
        unique=True,
 | 
						|
    )
 | 
						|
    card: Mapped['Card'] = relationship(back_populates='bill_request')
 | 
						|
 | 
						|
    created_at: Mapped[datetime.datetime] = mapped_column(nullable=False)
 | 
						|
    paid: Mapped[bool] = mapped_column(nullable=False, default=False)
 | 
						|
 | 
						|
    pdf_url: Mapped[str] = mapped_column(nullable=True)
 | 
						|
    invoice_number: Mapped[str] = mapped_column(nullable=True)
 | 
						|
 | 
						|
 | 
						|
class GroupBillRequest(BaseModel):
 | 
						|
    __tablename__ = 'group_bill_requests'
 | 
						|
 | 
						|
    group_id: Mapped[int] = mapped_column(
 | 
						|
        ForeignKey('card_groups.id'),
 | 
						|
        nullable=False,
 | 
						|
        primary_key=True,
 | 
						|
        unique=True,
 | 
						|
    )
 | 
						|
    group: Mapped['CardGroup'] = relationship(back_populates='bill_request')
 | 
						|
 | 
						|
    created_at: Mapped[datetime.datetime] = mapped_column(nullable=False)
 | 
						|
    paid: Mapped[bool] = mapped_column(nullable=False, default=False)
 | 
						|
 | 
						|
    pdf_url: Mapped[str] = mapped_column(nullable=True)
 | 
						|
    invoice_number: Mapped[str] = mapped_column(nullable=True)
 |