69 lines
1.5 KiB
Python
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
|
|
class Config:
|
|
orm_mode = True
|
|
|
|
class TripRegenerationResult(BaseModel):
|
|
trip_id: UUID
|
|
deleted_checked_trip_item_ids: List[UUID] = []
|
|
created_trip_item_ids: List[UUID] = []
|