[feat] remove example user
This commit is contained in:
parent
776b513858
commit
539f019f39
6 changed files with 4 additions and 62 deletions
|
|
@ -11,24 +11,19 @@ from adapter.config.model import AppConfig
|
||||||
from adapter.docker.runtime import DockerSandboxRuntime
|
from adapter.docker.runtime import DockerSandboxRuntime
|
||||||
from adapter.observability.factory import build_observability
|
from adapter.observability.factory import build_observability
|
||||||
from adapter.observability.runtime import ObservabilityRuntime
|
from adapter.observability.runtime import ObservabilityRuntime
|
||||||
from domain.user import User
|
|
||||||
from repository.sandbox_lock import ProcessLocalSandboxLifecycleLocker
|
from repository.sandbox_lock import ProcessLocalSandboxLifecycleLocker
|
||||||
from repository.sandbox_session import InMemorySandboxSessionRepository
|
from repository.sandbox_session import InMemorySandboxSessionRepository
|
||||||
from repository.user import InMemoryUserRepository
|
|
||||||
from usecase.interface import Clock
|
from usecase.interface import Clock
|
||||||
from usecase.sandbox import CleanupExpiredSandboxes, CreateSandbox
|
from usecase.sandbox import CleanupExpiredSandboxes, CreateSandbox
|
||||||
from usecase.user import GetUser
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass(frozen=True, slots=True)
|
@dataclass(frozen=True, slots=True)
|
||||||
class AppRepositories:
|
class AppRepositories:
|
||||||
user: InMemoryUserRepository
|
|
||||||
sandbox_session: InMemorySandboxSessionRepository
|
sandbox_session: InMemorySandboxSessionRepository
|
||||||
|
|
||||||
|
|
||||||
@dataclass(frozen=True, slots=True)
|
@dataclass(frozen=True, slots=True)
|
||||||
class AppUsecases:
|
class AppUsecases:
|
||||||
get_user: GetUser
|
|
||||||
create_sandbox: CreateSandbox
|
create_sandbox: CreateSandbox
|
||||||
cleanup_expired_sandboxes: CleanupExpiredSandboxes
|
cleanup_expired_sandboxes: CleanupExpiredSandboxes
|
||||||
|
|
||||||
|
|
@ -82,23 +77,12 @@ def build_container(
|
||||||
clock = SystemClock()
|
clock = SystemClock()
|
||||||
docker_client = docker.DockerClient(base_url=app_config.docker.base_url)
|
docker_client = docker.DockerClient(base_url=app_config.docker.base_url)
|
||||||
|
|
||||||
user_repository = InMemoryUserRepository(
|
|
||||||
observability.tracer, [User(id='123', email='aza@gglamer.ru', name='gglamer')]
|
|
||||||
)
|
|
||||||
sandbox_repository = InMemorySandboxSessionRepository()
|
sandbox_repository = InMemorySandboxSessionRepository()
|
||||||
sandbox_locker = ProcessLocalSandboxLifecycleLocker()
|
sandbox_locker = ProcessLocalSandboxLifecycleLocker()
|
||||||
sandbox_runtime = DockerSandboxRuntime(app_config.sandbox, docker_client)
|
sandbox_runtime = DockerSandboxRuntime(app_config.sandbox, docker_client)
|
||||||
|
|
||||||
repositories = AppRepositories(
|
repositories = AppRepositories(sandbox_session=sandbox_repository)
|
||||||
user=user_repository,
|
|
||||||
sandbox_session=sandbox_repository,
|
|
||||||
)
|
|
||||||
usecases = AppUsecases(
|
usecases = AppUsecases(
|
||||||
get_user=GetUser(
|
|
||||||
repository=user_repository,
|
|
||||||
logger=observability.logger,
|
|
||||||
tracer=observability.tracer,
|
|
||||||
),
|
|
||||||
create_sandbox=CreateSandbox(
|
create_sandbox=CreateSandbox(
|
||||||
repository=sandbox_repository,
|
repository=sandbox_repository,
|
||||||
locker=sandbox_locker,
|
locker=sandbox_locker,
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ from fastapi import Depends, Request
|
||||||
|
|
||||||
from adapter.di.container import AppContainer
|
from adapter.di.container import AppContainer
|
||||||
from usecase.sandbox import CreateSandbox
|
from usecase.sandbox import CreateSandbox
|
||||||
from usecase.user import GetUser
|
|
||||||
|
|
||||||
APP_CONTAINER_STATE = 'container'
|
APP_CONTAINER_STATE = 'container'
|
||||||
APP_CONFIG_STATE = 'config'
|
APP_CONFIG_STATE = 'config'
|
||||||
|
|
@ -15,10 +14,6 @@ def get_container(request: Request) -> AppContainer:
|
||||||
return container
|
return container
|
||||||
|
|
||||||
|
|
||||||
def get_get_user(container: AppContainer = Depends(get_container)) -> GetUser:
|
|
||||||
return container.usecases.get_user
|
|
||||||
|
|
||||||
|
|
||||||
def get_create_sandbox(
|
def get_create_sandbox(
|
||||||
container: AppContainer = Depends(get_container),
|
container: AppContainer = Depends(get_container),
|
||||||
) -> CreateSandbox:
|
) -> CreateSandbox:
|
||||||
|
|
|
||||||
|
|
@ -4,19 +4,16 @@ from adapter.di.container import AppContainer
|
||||||
from adapter.http.fastapi.dependencies import (
|
from adapter.http.fastapi.dependencies import (
|
||||||
get_container,
|
get_container,
|
||||||
get_create_sandbox,
|
get_create_sandbox,
|
||||||
get_get_user,
|
|
||||||
)
|
)
|
||||||
from adapter.http.fastapi.schemas import (
|
from adapter.http.fastapi.schemas import (
|
||||||
CreateSandboxRequest,
|
CreateSandboxRequest,
|
||||||
ErrorResponse,
|
ErrorResponse,
|
||||||
HealthResponse,
|
HealthResponse,
|
||||||
SandboxSessionResponse,
|
SandboxSessionResponse,
|
||||||
UserResponse,
|
|
||||||
)
|
)
|
||||||
from domain.error import SandboxError, SandboxStartError, UserNotFoundError
|
from domain.error import SandboxError, SandboxStartError
|
||||||
from domain.sandbox import SandboxSession
|
from domain.sandbox import SandboxSession
|
||||||
from usecase.sandbox import CreateSandbox, CreateSandboxCommand
|
from usecase.sandbox import CreateSandbox, CreateSandboxCommand
|
||||||
from usecase.user import GetUser, GetUserQuery
|
|
||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
|
|
||||||
|
|
@ -34,24 +31,6 @@ def health(container: AppContainer = Depends(get_container)) -> HealthResponse:
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@router.get(
|
|
||||||
'/users/{user_id}',
|
|
||||||
response_model=UserResponse,
|
|
||||||
responses={status.HTTP_404_NOT_FOUND: {'model': ErrorResponse}},
|
|
||||||
status_code=status.HTTP_200_OK,
|
|
||||||
)
|
|
||||||
def get_user(user_id: str, usecase: GetUser = Depends(get_get_user)) -> UserResponse:
|
|
||||||
try:
|
|
||||||
user = usecase.execute(GetUserQuery(user_id=user_id))
|
|
||||||
except UserNotFoundError as exc:
|
|
||||||
raise HTTPException(
|
|
||||||
status_code=status.HTTP_404_NOT_FOUND,
|
|
||||||
detail=str(exc),
|
|
||||||
) from exc
|
|
||||||
|
|
||||||
return UserResponse(id=user.id, email=user.email, name=user.name)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post(
|
@router.post(
|
||||||
'/create',
|
'/create',
|
||||||
response_model=SandboxSessionResponse,
|
response_model=SandboxSessionResponse,
|
||||||
|
|
|
||||||
|
|
@ -23,11 +23,5 @@ class SandboxSessionResponse(BaseModel):
|
||||||
expires_at: datetime
|
expires_at: datetime
|
||||||
|
|
||||||
|
|
||||||
class UserResponse(BaseModel):
|
|
||||||
id: str
|
|
||||||
email: str
|
|
||||||
name: str
|
|
||||||
|
|
||||||
|
|
||||||
class ErrorResponse(BaseModel):
|
class ErrorResponse(BaseModel):
|
||||||
detail: str
|
detail: str
|
||||||
|
|
|
||||||
2
tasks.md
2
tasks.md
|
|
@ -142,7 +142,7 @@
|
||||||
### M11. Удаление не-MVP user surface из приложения
|
### M11. Удаление не-MVP user surface из приложения
|
||||||
|
|
||||||
- Субагент: `feature-developer`
|
- Субагент: `feature-developer`
|
||||||
- Статус: pending
|
- Статус: completed
|
||||||
- Зависимости: `M08`
|
- Зависимости: `M08`
|
||||||
- Commit required: no
|
- Commit required: no
|
||||||
- Scope: убрать из runtime app неотносящиеся к MVP user endpoint и seed user wiring
|
- Scope: убрать из runtime app неотносящиеся к MVP user endpoint и seed user wiring
|
||||||
|
|
|
||||||
|
|
@ -25,10 +25,8 @@ from adapter.observability.runtime import ObservabilityRuntime
|
||||||
from domain.error import SandboxError, SandboxStartError
|
from domain.error import SandboxError, SandboxStartError
|
||||||
from domain.sandbox import SandboxSession, SandboxStatus
|
from domain.sandbox import SandboxSession, SandboxStatus
|
||||||
from repository.sandbox_session import InMemorySandboxSessionRepository
|
from repository.sandbox_session import InMemorySandboxSessionRepository
|
||||||
from repository.user import InMemoryUserRepository
|
|
||||||
from usecase.interface import Attrs
|
from usecase.interface import Attrs
|
||||||
from usecase.sandbox import CleanupExpiredSandboxes, CreateSandbox, CreateSandboxCommand
|
from usecase.sandbox import CleanupExpiredSandboxes, CreateSandbox, CreateSandboxCommand
|
||||||
from usecase.user import GetUser
|
|
||||||
|
|
||||||
|
|
||||||
class FakeLogger:
|
class FakeLogger:
|
||||||
|
|
@ -130,16 +128,8 @@ def build_container(
|
||||||
metrics=NoopMetrics(),
|
metrics=NoopMetrics(),
|
||||||
tracer=NoopTracer(),
|
tracer=NoopTracer(),
|
||||||
)
|
)
|
||||||
repositories = AppRepositories(
|
repositories = AppRepositories(sandbox_session=InMemorySandboxSessionRepository())
|
||||||
user=InMemoryUserRepository(NoopTracer()),
|
|
||||||
sandbox_session=InMemorySandboxSessionRepository(),
|
|
||||||
)
|
|
||||||
usecases = AppUsecases(
|
usecases = AppUsecases(
|
||||||
get_user=GetUser(
|
|
||||||
repository=repositories.user,
|
|
||||||
logger=logger,
|
|
||||||
tracer=NoopTracer(),
|
|
||||||
),
|
|
||||||
create_sandbox=create_sandbox_usecase,
|
create_sandbox=create_sandbox_usecase,
|
||||||
cleanup_expired_sandboxes=cleanup_usecase,
|
cleanup_expired_sandboxes=cleanup_usecase,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue