59 lines
1.1 KiB
Python
59 lines
1.1 KiB
Python
from datetime import datetime
|
|
from pydantic import BaseModel
|
|
|
|
class OwnerBase(BaseModel):
|
|
name: str
|
|
contact: str | None = None
|
|
|
|
class OwnerCreate(OwnerBase):
|
|
pass
|
|
|
|
class OwnerRead(OwnerBase):
|
|
id: int
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
class ServerBase(BaseModel):
|
|
hostname: str
|
|
description: str | None = None
|
|
owner_id: int | None = None
|
|
|
|
class ServerCreate(ServerBase):
|
|
pass
|
|
|
|
class ServerUpdate(ServerBase):
|
|
pass
|
|
|
|
class ServerRead(ServerBase):
|
|
id: int
|
|
owner: OwnerRead | None = None
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
class WorkEntryBase(BaseModel):
|
|
title: str
|
|
description: str | None = None
|
|
duration_minutes: int | None = None
|
|
|
|
class WorkEntryCreate(WorkEntryBase):
|
|
server_ids: list[int] | None = None
|
|
pass
|
|
|
|
class WorkEntryRead(WorkEntryBase):
|
|
id: int
|
|
created_at: datetime
|
|
created_by_user_id: int
|
|
servers: list[ServerRead]
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
class UserCreate(BaseModel):
|
|
username: str
|
|
password: str
|
|
|
|
class UserRead(BaseModel):
|
|
id: int
|
|
username: str
|
|
class Config:
|
|
from_attributes = True
|
|
|