utp_service/backend/app/schemas/object.py
2026-04-07 00:00:50 +03:00

81 lines
2.2 KiB
Python

from datetime import datetime
from typing import Optional
from pydantic import BaseModel
from app.schemas.tag import TagRead
class ObjectCreate(BaseModel):
name: str
description: Optional[str] = None
server_ip: Optional[str] = None
# Object DB sync settings
db_host: Optional[str] = None
db_port: int = 5432
db_name: Optional[str] = None
db_user: Optional[str] = None
db_password: Optional[str] = None # plaintext, encrypted on write
db_table: Optional[str] = None
db_col_ip: Optional[str] = None
db_col_type: Optional[str] = None
db_via_tunnel: bool = False
# SSH defaults
ssh_user: Optional[str] = None
ssh_password: Optional[str] = None # plaintext, encrypted on write
ssh_port: int = 22
notes: Optional[str] = None
is_active: bool = True
tag_ids: list[int] = []
class ObjectUpdate(BaseModel):
name: Optional[str] = None
description: Optional[str] = None
server_ip: Optional[str] = None
db_host: Optional[str] = None
db_port: Optional[int] = None
db_name: Optional[str] = None
db_user: Optional[str] = None
db_password: Optional[str] = None
db_table: Optional[str] = None
db_col_ip: Optional[str] = None
db_col_type: Optional[str] = None
db_via_tunnel: Optional[bool] = None
ssh_user: Optional[str] = None
ssh_password: Optional[str] = None
ssh_port: Optional[int] = None
notes: Optional[str] = None
is_active: Optional[bool] = None
tag_ids: Optional[list[int]] = None
class ObjectRead(BaseModel):
id: int
name: str
description: Optional[str] = None
server_ip: Optional[str] = None
db_host: Optional[str] = None
db_port: int
db_name: Optional[str] = None
db_user: Optional[str] = None
db_table: Optional[str] = None
db_col_ip: Optional[str] = None
db_col_type: Optional[str] = None
db_via_tunnel: bool
ssh_user: Optional[str] = None
ssh_port: int
notes: Optional[str] = None
is_active: bool
created_at: datetime
updated_at: datetime
tags: list[TagRead] = []
model_config = {"from_attributes": True}
class SyncResult(BaseModel):
created: int
updated: int
skipped: int
errors: list[str] = []