You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
from datetime import datetime
|
|
from typing import List, Optional
|
|
from uuid import UUID
|
|
|
|
from pydantic import Field
|
|
from src.models import DefaultBase, Pagination
|
|
from src.auth.service import CurrentUser
|
|
|
|
|
|
class MasterdataBase(DefaultBase):
|
|
# discount_rate: Optional[float]
|
|
# inflation_rate: Optional[float]
|
|
# manhours_rate: Optional[float]
|
|
name: Optional[str] = Field(None, nullable=True)
|
|
description: Optional[str] = Field(None, nullable=True)
|
|
unit_of_measurement: Optional[str] = Field(None, nullable=True)
|
|
value_num: Optional[float] = Field(
|
|
None, nullable=True, le=1_000_000_000_000_000 # 1 quadrillion
|
|
)
|
|
value_str: Optional[str] = Field(None, nullable=True)
|
|
seq: Optional[int] = Field(None, nullable=True)
|
|
created_at: Optional[datetime] = Field(None, nullable=True)
|
|
updated_at: Optional[datetime] = Field(None, nullable=True)
|
|
created_by: Optional[str] = Field(None, nullable=True)
|
|
updated_by: Optional[str] = Field(None, nullable=True)
|
|
|
|
|
|
class MasterDataCreate(MasterdataBase):
|
|
name: str = Field(..., nullable=True)
|
|
description: str = Field(..., nullable=True)
|
|
unit_of_measurement: str = Field(..., nullable=True)
|
|
value_num: float = Field(
|
|
..., nullable=True, le=1_000_000_000_000_000 # 1 quadrillion
|
|
)
|
|
value_str: str = Field(..., nullable=True)
|
|
seq: int = Field(..., nullable=True)
|
|
|
|
|
|
class MasterDataUpdate(MasterdataBase):
|
|
pass
|
|
|
|
|
|
class BulkMasterDataUpdate(MasterdataBase):
|
|
updates: List[dict] # each dict contains id and update data
|
|
|
|
|
|
class MasterDataRead(MasterdataBase):
|
|
id: UUID
|
|
|
|
|
|
class MasterDataPagination(Pagination):
|
|
items: List[MasterDataRead] = []
|