master/usecase/sandbox.py

46 lines
1.1 KiB
Python

from dataclasses import dataclass
from datetime import timedelta
from domain.sandbox import SandboxSession
from usecase.interface import Clock, Logger, SandboxRuntime, SandboxSessionRepository
@dataclass(frozen=True, slots=True)
class CreateSandboxCommand:
chat_id: str
class CreateSandbox:
def __init__(
self,
repository: SandboxSessionRepository,
runtime: SandboxRuntime,
clock: Clock,
logger: Logger,
ttl: timedelta,
) -> None:
self._repository = repository
self._runtime = runtime
self._clock = clock
self._logger = logger
self._ttl = ttl
def execute(self, command: CreateSandboxCommand) -> SandboxSession:
raise NotImplementedError
class CleanupExpiredSandboxes:
def __init__(
self,
repository: SandboxSessionRepository,
runtime: SandboxRuntime,
clock: Clock,
logger: Logger,
) -> None:
self._repository = repository
self._runtime = runtime
self._clock = clock
self._logger = logger
def execute(self) -> list[SandboxSession]:
raise NotImplementedError