packlist/backend/schemas.py

69 lines
1.5 KiB
Python

from typing import List, Optional
from uuid import UUID
from datetime import date
from pydantic import BaseModel
class TagBase(BaseModel):
name: str
class TagCreate(TagBase):
pass
class TagOut(TagBase):
id: UUID
class Config:
orm_mode = True
class TagIdPayload(BaseModel):
tag_id: UUID
class ItemBase(BaseModel):
name: str
class ItemCreate(ItemBase):
tag_ids: List[UUID] = []
class ItemOut(ItemBase):
id: UUID
tags: List[TagOut] = []
class Config:
orm_mode = True
class TripBase(BaseModel):
name: Optional[str] = None
start_date: Optional[date] = None
end_date: Optional[date] = None
class TripCreate(TripBase):
selected_tag_ids: List[UUID] = []
marked_tag_ids: List[UUID] = []
class TripUpdate(BaseModel):
name: Optional[str] = None
start_date: Optional[date] = None
end_date: Optional[date] = None
selected_tag_ids: Optional[List[UUID]] = None
marked_tag_ids: Optional[List[UUID]] = None
class TripOut(TripBase):
id: UUID
selected_tags: List[TagOut]
marked_tags: List[TagOut]
class Config:
orm_mode = True
class TripItemOut(BaseModel):
id: UUID
trip_id: UUID
item_id: UUID
name_calculated: str
checked: bool
tag: Optional[TagOut] = None
item: Optional[ItemOut] = None
class Config:
orm_mode = True
class TripRegenerationResult(BaseModel):
trip_id: UUID
deleted_checked_trip_item_ids: List[UUID] = []
created_trip_item_ids: List[UUID] = []