93 lines
1.9 KiB
Python
93 lines
1.9 KiB
Python
from typing import Optional, List
|
|
from pydantic import BaseModel, ConfigDict
|
|
from datetime import datetime
|
|
|
|
|
|
class UserCreate(BaseModel):
|
|
username: str
|
|
password: str
|
|
|
|
|
|
class UserOut(BaseModel):
|
|
id: int
|
|
username: str
|
|
role: str
|
|
created_at: Optional[datetime]
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
|
|
class Token(BaseModel):
|
|
access_token: str
|
|
refresh_token: str
|
|
token_type: str = "bearer"
|
|
|
|
|
|
class TokenRefresh(BaseModel):
|
|
refresh_token: str
|
|
|
|
|
|
class LoginPayload(BaseModel):
|
|
username: str
|
|
password: str
|
|
|
|
|
|
class HeartbeatPayload(BaseModel):
|
|
hostname: str
|
|
username: str
|
|
os_info: Optional[str] = None
|
|
local_ip: Optional[str] = None
|
|
public_ip: Optional[str] = None
|
|
uptime_sec: int
|
|
cpu_percent: float
|
|
ram_percent: float
|
|
ram_total_gb: Optional[float] = None
|
|
disk_info: Optional[List[dict]] = None
|
|
cpu_temp: Optional[float] = None
|
|
load_avg: Optional[str] = None
|
|
processes: Optional[List[dict]] = None
|
|
|
|
|
|
class HeartbeatOut(BaseModel):
|
|
id: int
|
|
timestamp: datetime
|
|
username: Optional[str]
|
|
local_ip: Optional[str]
|
|
cpu_percent: Optional[float]
|
|
ram_percent: Optional[float]
|
|
cpu_temp: Optional[float]
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
|
|
class ComputerOut(BaseModel):
|
|
id: int
|
|
hostname: str
|
|
os_info: Optional[str]
|
|
first_seen: Optional[datetime]
|
|
last_seen: Optional[datetime]
|
|
status: str
|
|
current_user: Optional[str]
|
|
current_ip: Optional[str]
|
|
current_cpu_percent: Optional[float]
|
|
current_ram_percent: Optional[float]
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
|
|
class ComputerDetailOut(ComputerOut):
|
|
heartbeats: List[HeartbeatOut] = []
|
|
|
|
|
|
class NotificationOut(BaseModel):
|
|
id: int
|
|
computer_id: Optional[int]
|
|
type: str
|
|
title: str
|
|
message: str
|
|
is_read: bool
|
|
sent_at: Optional[datetime]
|
|
read_at: Optional[datetime]
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|