46 lines
1.1 KiB
Python
46 lines
1.1 KiB
Python
from datetime import date
|
|
|
|
from pydantic import BaseModel, EmailStr, Field
|
|
|
|
|
|
class RegisterRequest(BaseModel):
|
|
email: EmailStr
|
|
password: str = Field(min_length=10, max_length=255)
|
|
|
|
|
|
class LoginRequest(BaseModel):
|
|
email: EmailStr
|
|
password: str = Field(min_length=1, max_length=255)
|
|
|
|
|
|
class MFAChallengeRequest(BaseModel):
|
|
code: str = Field(min_length=1, max_length=32)
|
|
|
|
|
|
class TimeEntryCreate(BaseModel):
|
|
date: date
|
|
start_time: str
|
|
end_time: str
|
|
break_minutes: int | None = Field(default=None, ge=0)
|
|
break_mode: str | None = Field(default=None, pattern="^(manual|auto)$")
|
|
notes: str | None = None
|
|
|
|
|
|
class TimeEntryUpdate(BaseModel):
|
|
start_time: str | None = None
|
|
end_time: str | None = None
|
|
break_minutes: int | None = Field(default=None, ge=0)
|
|
break_mode: str | None = Field(default=None, pattern="^(manual|auto)$")
|
|
notes: str | None = None
|
|
|
|
|
|
class TimeEntryOut(BaseModel):
|
|
id: str
|
|
date: date
|
|
start_time: str
|
|
end_time: str
|
|
break_minutes: int
|
|
break_mode: str
|
|
net_minutes: int
|
|
notes: str | None
|