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