juggl/backend/src/models/project.py
2021-12-22 09:06:08 +01:00

38 lines
1.3 KiB
Python

from datetime import datetime, timedelta
from typing import Optional
from sqlmodel import SQLModel, Field
class ProjectBase(SQLModel):
"""Superclass model which all project classes have in common."""
name: str # = Field(description="Name of the project", example="Learning")
class ProjectCreate(ProjectBase):
"""Model used when a user creates a new project."""
pass
class Project(ProjectBase, table=True):
"""Model used inside the database."""
id: Optional[int] = Field(default=None, primary_key=True)
class ProjectRead(ProjectCreate):
"""Model used when querying information about a module."""
id: int
name: str # = Field(description="Name of the project", example="Learning")
start_date: datetime # = Field(description="Project creation date", example=datetime.now())
duration: timedelta # = Field(description="Total tracked duration", example=timedelta(days=3, hours=5, minutes=47))
records: int # = Field(description="Total number of trackings/records", example=42)
# class Config: # TODO: Adding this config may be done with a decorator
# """pydantic config"""
# json_encoders = {
# # Serialize timedeltas as ISO 8601 and not as float seconds, which is the default
# timedelta: timedelta_isoformat,
# }