timetracker/backend/schemas.py
hhftechnologies c8f5379289 update
2024-11-25 23:16:17 +05:30

64 lines
No EOL
1.6 KiB
Python

from datetime import datetime, timedelta
from pydantic import BaseModel
from typing import Optional
from typing import List, Optional
from datetime import datetime, timedelta, timezone
class Config:
orm_mode = True
json_encoders = {
datetime: lambda v: v.astimezone(timezone.utc).isoformat(timespec='microseconds').replace('+00:00', 'Z')
}
class UserBase(BaseModel):
name: str
class UserCreate(UserBase):
name: str
password: Optional[str] = None # Make the password optional
class User(BaseModel):
name: str
class Config:
from_attributes = True
class TimeEntry(BaseModel):
clock_in: datetime | None
clock_out: datetime | None
clock_in_note: str | None
clock_out_note: str | None
class Config:
from_attributes = True
class DailyTime(BaseModel):
date: str
clock_in: TimeEntry
clock_out: TimeEntry
total_time: str # New field to represent the total time worked that day
class TimeEntryResponse(BaseModel):
date: str
clock_in: Optional[datetime]
clock_out: Optional[datetime]
total_time: str
class Config:
orm_mode = True
json_encoders = {
datetime: lambda v: v.isoformat()
}
class PeriodSummary(BaseModel):
total_hours: float
days_worked: int
entries: List[TimeEntryResponse]
class Message(BaseModel):
message: str
class EditClockTimes(BaseModel):
date: str # Keep as string since we're using it to query
clock_in_time: Optional[str] = None # Expect ISO datetime string
clock_out_time: Optional[str] = None