48 lines
1.1 KiB
Python
48 lines
1.1 KiB
Python
|
|
"""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()
|