"""CRUD серверов.""" from __future__ import annotations from typing import List, Optional from sqlmodel import select from app.db.database import get_session from app.db.models import Server def list_servers() -> List[Server]: with get_session() as s: return list(s.exec(select(Server).order_by(Server.name)).all()) def get_server(server_id: int) -> Optional[Server]: with get_session() as s: return s.get(Server, server_id) def add_server(**fields) -> Server: with get_session() as s: srv = Server(**fields) s.add(srv) s.commit() s.refresh(srv) return srv def update_server(server_id: int, **fields) -> None: with get_session() as s: srv = s.get(Server, server_id) if not srv: return for k, v in fields.items(): setattr(srv, k, v) s.add(srv) s.commit() def delete_server(server_id: int) -> None: with get_session() as s: srv = s.get(Server, server_id) if srv: s.delete(srv) s.commit()