mirror of
https://github.com/velocitatem/cvfs.git
synced 2026-05-31 16:53:38 +00:00
feat: allow updating existing CV branches
This commit is contained in:
@@ -4,8 +4,12 @@ from fastapi import APIRouter, Depends, HTTPException
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app.api.deps import get_current_user, get_db
|
||||
from app.schemas import BranchCreateRequest, VersionResponse
|
||||
from app.services.versions import create_branch, delete_version
|
||||
from app.schemas import BranchCreateRequest, PatchApplyRequest, VersionResponse
|
||||
from app.services.versions import (
|
||||
append_patches_to_version,
|
||||
create_branch,
|
||||
delete_version,
|
||||
)
|
||||
from dlib.auth import AuthenticatedUser
|
||||
from dlib.cv.ats_guard import PatchValidationError
|
||||
|
||||
@@ -48,3 +52,26 @@ async def delete_version_branch(
|
||||
raise HTTPException(status_code=400, detail="Cannot delete root version")
|
||||
if result == "has_children":
|
||||
raise HTTPException(status_code=409, detail="Delete child branches first")
|
||||
|
||||
|
||||
@router.post("/{version_id}/patches", response_model=VersionResponse)
|
||||
async def append_patches(
|
||||
version_id: str,
|
||||
payload: PatchApplyRequest,
|
||||
session: AsyncSession = Depends(get_db),
|
||||
user: AuthenticatedUser = Depends(get_current_user),
|
||||
):
|
||||
if not payload.patches:
|
||||
raise HTTPException(status_code=400, detail="No patches provided")
|
||||
try:
|
||||
version = await append_patches_to_version(
|
||||
session,
|
||||
owner_id=user.sub,
|
||||
version_id=version_id,
|
||||
patches=payload.patches,
|
||||
)
|
||||
except PatchValidationError as exc:
|
||||
raise HTTPException(status_code=422, detail=str(exc)) from exc
|
||||
if not version:
|
||||
raise HTTPException(status_code=404, detail="Version not found")
|
||||
return VersionResponse.model_validate(version)
|
||||
|
||||
Reference in New Issue
Block a user