# backend/schemas.py from pydantic import BaseModel from typing import Optional, List, Literal from datetime import datetime # === Equipment Type === class EquipmentTypeBase(BaseModel): name: str class EquipmentTypeCreate(EquipmentTypeBase): pass class EquipmentTypeRead(EquipmentTypeBase): id: int class Config: orm_mode = True # === Component === class ComponentBase(BaseModel): name: str description: Optional[str] = None class ComponentCreate(ComponentBase): oborud_id: int class ComponentRead(ComponentBase): id: int class Config: orm_mode = True # === Consumable === class ConsumableBase(BaseModel): name: str description: Optional[str] = None class ConsumableCreate(ConsumableBase): oborud_id: int class ConsumableRead(ConsumableBase): id: int class Config: orm_mode = True # === Owner === class OwnerBase(BaseModel): name: str class OwnerCreate(OwnerBase): pass class OwnerRead(OwnerBase): id: int class Config: orm_mode = True # === Oborud === class OborudBase(BaseModel): invNumber: Optional[int] nazvanie: str raspologenie: Optional[str] = None numberppasu: Optional[str] = None kolichestvo: Optional[int] = None aud_id: int type_id: int owner_id: Optional[int] = None class OborudCreate(OborudBase): pass class OborudUpdate(BaseModel): invNumber: Optional[int] = None nazvanie: Optional[str] = None raspologenie: Optional[str] = None numberppasu: Optional[str] = None kolichestvo: Optional[int] = None aud_id: Optional[int] = None type_id: Optional[int] = None owner_id: Optional[int] = None class OborudRead(OborudBase): id: int type: EquipmentTypeRead owner: Optional[OwnerRead] = None components: List[ComponentRead] = [] consumables: List[ConsumableRead] = [] class Config: orm_mode = True # === Auditory === class AuditoryBase(BaseModel): audnazvanie: str class AuditoryCreate(AuditoryBase): pass class AuditoryRead(AuditoryBase): id: int class Config: orm_mode = True # === Zametka === class ZametkaBase(BaseModel): txtzam: str rmdt: Optional[datetime] = None class ZametkaCreate(ZametkaBase): pass class ZametkaRead(ZametkaBase): id: int created_date: datetime class Config: orm_mode = True # === Auth/User === class Token(BaseModel): access_token: str token_type: str = "bearer" class TokenData(BaseModel): username: Optional[str] = None role: Optional[str] = None Role = Literal["admin", "editor", "viewer"] class UserBase(BaseModel): username: str role: Role = "viewer" class UserCreate(UserBase): password: str class UserRead(UserBase): id: int class Config: orm_mode = True class UserRoleUpdate(BaseModel): role: Role