add crud for forms, templates, shipment, users and auth with keycloak
This commit is contained in:
@@ -3,85 +3,6 @@ from enum import Enum
|
||||
from typing import Optional
|
||||
import datetime
|
||||
|
||||
class Unit(Enum):
|
||||
GRAMS = 1
|
||||
KILO = 2
|
||||
|
||||
class ProductBase(SQLModel):
|
||||
name: str
|
||||
unit: Unit
|
||||
price: float
|
||||
price_kg: float | None
|
||||
weight: float
|
||||
productor_id: int | None = Field(default=None, foreign_key="productor.id")
|
||||
|
||||
class ProductPublic(ProductBase):
|
||||
id: int
|
||||
|
||||
class Product(ProductBase, table=True):
|
||||
id: int | None = Field(default=None, primary_key=True)
|
||||
|
||||
productor: Optional['Productor'] = Relationship(back_populates="products")
|
||||
|
||||
class ProductUpdate(SQLModel):
|
||||
name: str | None
|
||||
unit: Unit | None
|
||||
price: float | None
|
||||
price_kg: float | None
|
||||
weight: float | None
|
||||
productor_id: int | None = Field(default=None, foreign_key="productor.id")
|
||||
|
||||
|
||||
class ProductCreate(ProductBase):
|
||||
pass
|
||||
|
||||
class ProductorBase(SQLModel):
|
||||
name: str
|
||||
address: str
|
||||
payment: str
|
||||
|
||||
class ProductorPublic(ProductorBase):
|
||||
id: int
|
||||
products: list[Product] = []
|
||||
|
||||
class Productor(ProductorBase, table=True):
|
||||
id: int | None = Field(default=None, primary_key=True)
|
||||
|
||||
products: list[Product] = Relationship(back_populates='productor')
|
||||
|
||||
class ProductorUpdate(SQLModel):
|
||||
name: str | None
|
||||
address: str | None
|
||||
payment: str | None
|
||||
|
||||
class ProductorCreate(ProductorBase):
|
||||
pass
|
||||
|
||||
class FormBase(SQLModel):
|
||||
productor_id: int | None = Field(default=None, foreign_key="productor.id")
|
||||
referer_id: int | None = Field(default=None, foreign_key="referer.id")
|
||||
season: str
|
||||
shipments: int
|
||||
start: datetime.date
|
||||
end: datetime.date
|
||||
|
||||
class FormPublic(FormBase):
|
||||
id: int
|
||||
|
||||
class Form(FormBase, table=True):
|
||||
id: int | None = Field(default=None, primary_key=True)
|
||||
|
||||
class FormUpdate(SQLModel):
|
||||
productor_id: int | None = Field(default=None, foreign_key="productor.id")
|
||||
referer_id: int | None = Field(default=None, foreign_key="user.id")
|
||||
season: str | None
|
||||
shipments: int | None
|
||||
start: datetime.date | None
|
||||
end: datetime.date | None
|
||||
|
||||
class FormCreate(FormBase):
|
||||
pass
|
||||
|
||||
class UserBase(SQLModel):
|
||||
name: str
|
||||
email: str
|
||||
@@ -97,4 +18,150 @@ class UserUpdate(SQLModel):
|
||||
email: str | None
|
||||
|
||||
class UserCreate(UserBase):
|
||||
pass
|
||||
pass
|
||||
|
||||
class ProductorBase(SQLModel):
|
||||
name: str
|
||||
address: str
|
||||
payment: str
|
||||
|
||||
class ProductorPublic(ProductorBase):
|
||||
id: int
|
||||
products: list["Product"] = []
|
||||
|
||||
class Productor(ProductorBase, table=True):
|
||||
id: int | None = Field(default=None, primary_key=True)
|
||||
|
||||
products: list["Product"] = Relationship(back_populates='productor')
|
||||
|
||||
class ProductorUpdate(SQLModel):
|
||||
name: str | None
|
||||
address: str | None
|
||||
payment: str | None
|
||||
|
||||
class ProductorCreate(ProductorBase):
|
||||
pass
|
||||
|
||||
class Unit(Enum):
|
||||
GRAMS = 1
|
||||
KILO = 2
|
||||
|
||||
class ProductType(Enum):
|
||||
PLANNED = 1
|
||||
RECCURENT = 2
|
||||
|
||||
class ShipmentProductLink(SQLModel, table=True):
|
||||
shipment_id: Optional[int] = Field(default=None, foreign_key="shipment.id", primary_key=True)
|
||||
product_id: Optional[int] = Field(default=None, foreign_key="product.id", primary_key=True)
|
||||
|
||||
class ProductBase(SQLModel):
|
||||
name: str
|
||||
unit: Unit
|
||||
price: float
|
||||
price_kg: float | None
|
||||
weight: float
|
||||
type: ProductType
|
||||
productor_id: int | None = Field(default=None, foreign_key="productor.id")
|
||||
|
||||
class ProductPublic(ProductBase):
|
||||
id: int
|
||||
productor: Productor | None
|
||||
shipments: list["Shipment"] | None
|
||||
|
||||
class Product(ProductBase, table=True):
|
||||
id: int | None = Field(default=None, primary_key=True)
|
||||
shipments: list["Shipment"] = Relationship(back_populates="products", link_model=ShipmentProductLink)
|
||||
productor: Optional[Productor] = Relationship(back_populates="products")
|
||||
|
||||
class ProductUpdate(SQLModel):
|
||||
name: str | None
|
||||
unit: Unit | None
|
||||
price: float | None
|
||||
price_kg: float | None
|
||||
weight: float | None
|
||||
productor_id: int | None
|
||||
shipment_ids: list[int] | None
|
||||
|
||||
class ProductCreate(ProductBase):
|
||||
shipment_ids: list[int] | None
|
||||
|
||||
class FormBase(SQLModel):
|
||||
name: str
|
||||
productor_id: int | None = Field(default=None, foreign_key="productor.id")
|
||||
referer_id: int | None = Field(default=None, foreign_key="user.id")
|
||||
season: str
|
||||
start: datetime.date
|
||||
end: datetime.date
|
||||
|
||||
class FormPublic(FormBase):
|
||||
id: int
|
||||
productor: ProductorPublic | None
|
||||
referer: User
|
||||
shipments: list["Shipment"] = []
|
||||
|
||||
class Form(FormBase, table=True):
|
||||
id: int | None = Field(default=None, primary_key=True)
|
||||
productor: Optional['Productor'] = Relationship()
|
||||
referer: Optional['User'] = Relationship()
|
||||
shipments: list["Shipment"] = Relationship()
|
||||
|
||||
class FormUpdate(SQLModel):
|
||||
productor_id: int | None
|
||||
referer_id: int | None
|
||||
season: str | None
|
||||
start: datetime.date | None
|
||||
end: datetime.date | None
|
||||
|
||||
class FormCreate(FormBase):
|
||||
pass
|
||||
|
||||
class TemplateBase(SQLModel):
|
||||
pass
|
||||
|
||||
class TemplatePublic(TemplateBase):
|
||||
id: int
|
||||
|
||||
class Template(TemplateBase, table=True):
|
||||
id: int | None = Field(default=None, primary_key=True)
|
||||
|
||||
class TemplateUpdate(SQLModel):
|
||||
pass
|
||||
|
||||
class TemplateCreate(TemplateBase):
|
||||
pass
|
||||
|
||||
class ContractBase(SQLModel):
|
||||
pass
|
||||
|
||||
class ContractPublic(ContractBase):
|
||||
id: int
|
||||
|
||||
class Contract(ContractBase, table=True):
|
||||
id: int | None = Field(default=None, primary_key=True)
|
||||
|
||||
class ContractUpdate(SQLModel):
|
||||
pass
|
||||
|
||||
class ContractCreate(ContractBase):
|
||||
pass
|
||||
|
||||
class ShipmentBase(SQLModel):
|
||||
name: str
|
||||
date: datetime.date
|
||||
form_id: int | None = Field(default=None, foreign_key="form.id")
|
||||
|
||||
class ShipmentPublic(ShipmentBase):
|
||||
id: int
|
||||
products: list[Product] = []
|
||||
|
||||
class Shipment(ShipmentBase, table=True):
|
||||
id: int | None = Field(default=None, primary_key=True)
|
||||
products: list[Product] = Relationship(back_populates="shipments", link_model=ShipmentProductLink)
|
||||
|
||||
class ShipmentUpdate(SQLModel):
|
||||
name: str | None
|
||||
date: str | None
|
||||
product_ids: list[int]
|
||||
|
||||
class ShipmentCreate(ShipmentBase):
|
||||
product_ids: list[int]
|
||||
Reference in New Issue
Block a user