| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- from typing import List, Optional
- from sqlalchemy.ext.asyncio import AsyncSession
- from sqlalchemy import select
- from app.models.remote_server import RemoteServer
- from app.schemas.remote_server import RemoteServerCreate, RemoteServerUpdate
- class RemoteServerService:
- @staticmethod
- async def get_all(db: AsyncSession) -> List[RemoteServer]:
- result = await db.execute(select(RemoteServer))
- return result.scalars().all()
- @staticmethod
- async def get_by_server_id(db: AsyncSession, server_id: str) -> Optional[RemoteServer]:
- result = await db.execute(select(RemoteServer).filter(RemoteServer.server_id == server_id))
- return result.scalar_one_or_none()
- @staticmethod
- async def create(db: AsyncSession, server_in: RemoteServerCreate) -> RemoteServer:
- obj = RemoteServer(**server_in.model_dump())
- db.add(obj)
- await db.commit()
- await db.refresh(obj)
- return obj
- @staticmethod
- async def update(db: AsyncSession, server_id: str, server_in: RemoteServerUpdate) -> Optional[RemoteServer]:
- obj = await RemoteServerService.get_by_server_id(db, server_id)
- if not obj:
- return None
-
- update_data = server_in.model_dump(exclude_unset=True)
- for field, value in update_data.items():
- setattr(obj, field, value)
-
- db.add(obj)
- await db.commit()
- await db.refresh(obj)
- return obj
- @staticmethod
- async def delete(db: AsyncSession, server_id: str) -> bool:
- obj = await RemoteServerService.get_by_server_id(db, server_id)
- if not obj:
- return False
- await db.delete(obj)
- await db.commit()
- return True
|