46 lines
1.1 KiB
Python
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
|