remote_server_service.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from typing import List, Optional
  2. from sqlalchemy.ext.asyncio import AsyncSession
  3. from sqlalchemy import select
  4. from app.models.remote_server import RemoteServer
  5. from app.schemas.remote_server import RemoteServerCreate, RemoteServerUpdate
  6. class RemoteServerService:
  7. @staticmethod
  8. async def get_all(db: AsyncSession) -> List[RemoteServer]:
  9. result = await db.execute(select(RemoteServer))
  10. return result.scalars().all()
  11. @staticmethod
  12. async def get_by_server_id(db: AsyncSession, server_id: str) -> Optional[RemoteServer]:
  13. result = await db.execute(select(RemoteServer).filter(RemoteServer.server_id == server_id))
  14. return result.scalar_one_or_none()
  15. @staticmethod
  16. async def create(db: AsyncSession, server_in: RemoteServerCreate) -> RemoteServer:
  17. obj = RemoteServer(**server_in.model_dump())
  18. db.add(obj)
  19. await db.commit()
  20. await db.refresh(obj)
  21. return obj
  22. @staticmethod
  23. async def update(db: AsyncSession, server_id: str, server_in: RemoteServerUpdate) -> Optional[RemoteServer]:
  24. obj = await RemoteServerService.get_by_server_id(db, server_id)
  25. if not obj:
  26. return None
  27. update_data = server_in.model_dump(exclude_unset=True)
  28. for field, value in update_data.items():
  29. setattr(obj, field, value)
  30. db.add(obj)
  31. await db.commit()
  32. await db.refresh(obj)
  33. return obj
  34. @staticmethod
  35. async def delete(db: AsyncSession, server_id: str) -> bool:
  36. obj = await RemoteServerService.get_by_server_id(db, server_id)
  37. if not obj:
  38. return False
  39. await db.delete(obj)
  40. await db.commit()
  41. return True