81 lines
2.2 KiB
Python
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] = []
|