first commit
This commit is contained in:
1
backend/app/api/editor/__init__.py
Normal file
1
backend/app/api/editor/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
"""Editor API routers."""
|
||||
BIN
backend/app/api/editor/__pycache__/__init__.cpython-312.pyc
Normal file
BIN
backend/app/api/editor/__pycache__/__init__.cpython-312.pyc
Normal file
Binary file not shown.
BIN
backend/app/api/editor/__pycache__/router.cpython-312.pyc
Normal file
BIN
backend/app/api/editor/__pycache__/router.cpython-312.pyc
Normal file
Binary file not shown.
90
backend/app/api/editor/router.py
Normal file
90
backend/app/api/editor/router.py
Normal file
@@ -0,0 +1,90 @@
|
||||
from fastapi import APIRouter, Depends, HTTPException, status
|
||||
|
||||
from app.api.dependencies.auth import get_access_token
|
||||
from app.api.dependencies.permissions import require_permission
|
||||
from app.application.editor.service import EditorService
|
||||
from app.schemas.auth import AuthenticatedUser
|
||||
from app.schemas.editor import (
|
||||
BuildPreviewRequest,
|
||||
BuildPreviewResponse,
|
||||
EditorChangeListResponse,
|
||||
EditorSessionCreateRequest,
|
||||
EditorSessionRead,
|
||||
EditorSessionUpdateRequest,
|
||||
SaveVariantChangesRequest,
|
||||
)
|
||||
|
||||
router = APIRouter()
|
||||
service = EditorService()
|
||||
|
||||
|
||||
@router.post("/sessions", response_model=EditorSessionRead)
|
||||
async def create_editor_session(
|
||||
request: EditorSessionCreateRequest,
|
||||
current_user: AuthenticatedUser = Depends(require_permission("can_use_editor")),
|
||||
) -> EditorSessionRead:
|
||||
return await service.create_session(request, current_user)
|
||||
|
||||
|
||||
@router.get("/sessions/{session_id}", response_model=EditorSessionRead)
|
||||
async def get_editor_session(
|
||||
session_id: str,
|
||||
_: AuthenticatedUser = Depends(require_permission("can_use_editor")),
|
||||
) -> EditorSessionRead:
|
||||
item = await service.get_session(session_id)
|
||||
if not item:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail=f"Editor session '{session_id}' not found.",
|
||||
)
|
||||
return item
|
||||
|
||||
|
||||
@router.patch("/sessions/{session_id}", response_model=EditorSessionRead)
|
||||
async def update_editor_session(
|
||||
session_id: str,
|
||||
request: EditorSessionUpdateRequest,
|
||||
_: AuthenticatedUser = Depends(require_permission("can_use_editor")),
|
||||
) -> EditorSessionRead:
|
||||
item = await service.update_session(session_id, request)
|
||||
if not item:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail=f"Editor session '{session_id}' not found.",
|
||||
)
|
||||
return item
|
||||
|
||||
|
||||
@router.delete("/sessions/{session_id}", status_code=status.HTTP_204_NO_CONTENT)
|
||||
async def delete_editor_session(
|
||||
session_id: str,
|
||||
_: AuthenticatedUser = Depends(require_permission("can_use_editor")),
|
||||
) -> None:
|
||||
await service.delete_session(session_id)
|
||||
|
||||
|
||||
@router.get("/variants/{variant_id}/changes", response_model=EditorChangeListResponse)
|
||||
async def list_variant_changes(
|
||||
variant_id: str,
|
||||
_: AuthenticatedUser = Depends(require_permission("can_use_editor")),
|
||||
access_token: str = Depends(get_access_token),
|
||||
) -> EditorChangeListResponse:
|
||||
return await service.list_changes_with_access_token(variant_id, access_token)
|
||||
|
||||
|
||||
@router.put("/variants/{variant_id}/changes", response_model=EditorChangeListResponse)
|
||||
async def save_variant_changes(
|
||||
variant_id: str,
|
||||
request: SaveVariantChangesRequest,
|
||||
_: AuthenticatedUser = Depends(require_permission("can_use_editor")),
|
||||
access_token: str = Depends(get_access_token),
|
||||
) -> EditorChangeListResponse:
|
||||
return await service.save_changes_with_access_token(variant_id, request, access_token)
|
||||
|
||||
|
||||
@router.post("/previews/build", response_model=BuildPreviewResponse)
|
||||
async def build_preview(
|
||||
request: BuildPreviewRequest,
|
||||
_: AuthenticatedUser = Depends(require_permission("can_use_editor")),
|
||||
) -> BuildPreviewResponse:
|
||||
return await service.build_preview(request)
|
||||
Reference in New Issue
Block a user