from typing import TYPE_CHECKING, Optional from sqlalchemy import CheckConstraint from sqlmodel import Field, Relationship, SQLModel if TYPE_CHECKING: from app.models.order import Order from app.models.wine_offering import WineOffering class OrderLineBase(SQLModel): quantity: int = Field(gt=0) class OrderLine(OrderLineBase, table=True): __tablename__ = "order_line" __table_args__ = (CheckConstraint("quantity > 0", name="ck_order_line_quantity_positive"),) id: Optional[int] = Field(default=None, primary_key=True) order_id: int = Field(foreign_key="orders.id", ondelete="CASCADE") wine_offering_id: int = Field(foreign_key="wine_offering.id", ondelete="RESTRICT") order: "Order" = Relationship(back_populates="order_lines") wine_offering: "WineOffering" = Relationship(back_populates="order_lines") class OrderLinePublic(OrderLineBase): id: int order_id: int wine_offering_id: int