Add file enrichment update endpoint and modify register/remove file methods
This commit is contained in:
@@ -1000,6 +1000,7 @@ async def register_paths(slug: str, req: RegisterPathsRequest):
|
|||||||
"size": file_path.stat().st_size,
|
"size": file_path.stat().st_size,
|
||||||
"added_at": now_iso(),
|
"added_at": now_iso(),
|
||||||
"sync_status": "pending",
|
"sync_status": "pending",
|
||||||
|
"enrich_enabled": False,
|
||||||
}
|
}
|
||||||
data.setdefault("files", []).append(entry)
|
data.setdefault("files", []).append(entry)
|
||||||
added.append(entry)
|
added.append(entry)
|
||||||
@@ -1007,7 +1008,7 @@ async def register_paths(slug: str, req: RegisterPathsRequest):
|
|||||||
|
|
||||||
job_id = None
|
job_id = None
|
||||||
if added:
|
if added:
|
||||||
_set_pending_prepare_signature(data, _source_signature(data.get("files", [])))
|
_set_pending_prepare_signature(data, _prepare_signature(data.get("files", [])))
|
||||||
write_library(slug, data)
|
write_library(slug, data)
|
||||||
if added:
|
if added:
|
||||||
job_id = await _ensure_prepare_job(slug)
|
job_id = await _ensure_prepare_job(slug)
|
||||||
@@ -1032,12 +1033,12 @@ async def remove_file(slug: str, req: RemoveFileRequest):
|
|||||||
if symlink_path.exists():
|
if symlink_path.exists():
|
||||||
symlink_path.unlink()
|
symlink_path.unlink()
|
||||||
|
|
||||||
source_signature = _source_signature(data.get("files", []))
|
prepare_signature = _prepare_signature(data.get("files", []))
|
||||||
_set_pending_prepare_signature(data, source_signature)
|
_set_pending_prepare_signature(data, prepare_signature)
|
||||||
write_library(slug, data)
|
write_library(slug, data)
|
||||||
|
|
||||||
job_id = None
|
job_id = None
|
||||||
if source_signature:
|
if prepare_signature:
|
||||||
job_id = await _ensure_prepare_job(slug)
|
job_id = await _ensure_prepare_job(slug)
|
||||||
else:
|
else:
|
||||||
_cleanup_generated_artifacts(slug)
|
_cleanup_generated_artifacts(slug)
|
||||||
@@ -1045,6 +1046,31 @@ async def remove_file(slug: str, req: RemoveFileRequest):
|
|||||||
return {"ok": True, "job_id": job_id, "library": library_payload(data)}
|
return {"ok": True, "job_id": job_id, "library": library_payload(data)}
|
||||||
|
|
||||||
|
|
||||||
|
@router.patch("/libraries/{slug}/files/enrichment")
|
||||||
|
async def update_file_enrichment(slug: str, req: UpdateFileEnrichmentRequest):
|
||||||
|
data = read_library(slug)
|
||||||
|
files = list(data.get("files", []))
|
||||||
|
target = next((entry for entry in files if entry.get("rel") == req.rel), None)
|
||||||
|
if not target:
|
||||||
|
raise HTTPException(status_code=404, detail="File not found")
|
||||||
|
|
||||||
|
desired = bool(req.enabled)
|
||||||
|
if _file_enrich_enabled(target) == desired:
|
||||||
|
return {"job_id": None, "library": library_payload(data)}
|
||||||
|
|
||||||
|
target["enrich_enabled"] = desired
|
||||||
|
target["sync_status"] = "pending"
|
||||||
|
target.pop("sync_error", None)
|
||||||
|
target.pop("synced_at", None)
|
||||||
|
|
||||||
|
prepare_signature = _prepare_signature(files)
|
||||||
|
_set_pending_prepare_signature(data, prepare_signature)
|
||||||
|
write_library(slug, data)
|
||||||
|
|
||||||
|
job_id = await _ensure_prepare_job(slug)
|
||||||
|
return {"job_id": job_id, "library": library_payload(data)}
|
||||||
|
|
||||||
|
|
||||||
@router.post("/libraries/{slug}/jobs/build")
|
@router.post("/libraries/{slug}/jobs/build")
|
||||||
async def build_library(slug: str):
|
async def build_library(slug: str):
|
||||||
data = read_library(slug)
|
data = read_library(slug)
|
||||||
|
|||||||
Reference in New Issue
Block a user