fase 4 afgerond
This commit is contained in:
@@ -137,3 +137,13 @@ def reorder_selected_files(
|
||||
raise HTTPException(status_code=400, detail=str(exc))
|
||||
|
||||
return {"session_id": normalized_session_id, "items": items}
|
||||
|
||||
|
||||
@router.get("/mapping-preview")
|
||||
def get_mapping_preview(session_id: str = Query("default", min_length=1)):
|
||||
service = SessionService()
|
||||
normalized_session_id = _normalize_session_id(session_id)
|
||||
try:
|
||||
return service.build_mapping_preview(normalized_session_id)
|
||||
except ValueError as exc:
|
||||
raise HTTPException(status_code=400, detail=str(exc))
|
||||
|
||||
@@ -316,3 +316,34 @@ class SessionService:
|
||||
(position, session_id, item["selection_id"]),
|
||||
)
|
||||
return self.list_selected_files(session_id)
|
||||
|
||||
def build_mapping_preview(self, session_id: str) -> dict:
|
||||
episodes = self.list_selected_episodes(session_id)
|
||||
files = self.list_selected_files(session_id)
|
||||
|
||||
if len(episodes) != len(files):
|
||||
raise ValueError(
|
||||
"Selected episodes and selected files count mismatch: "
|
||||
f"{len(episodes)} episodes vs {len(files)} files"
|
||||
)
|
||||
|
||||
mappings = []
|
||||
for index, (episode_item, file_item) in enumerate(zip(episodes, files)):
|
||||
mappings.append(
|
||||
{
|
||||
"index": index,
|
||||
"episode_selection_id": episode_item["selection_id"],
|
||||
"file_selection_id": file_item["selection_id"],
|
||||
"episode": episode_item["episode"],
|
||||
"file": file_item["file"],
|
||||
}
|
||||
)
|
||||
|
||||
return {
|
||||
"session_id": session_id,
|
||||
"counts": {
|
||||
"episodes": len(episodes),
|
||||
"files": len(files),
|
||||
},
|
||||
"mappings": mappings,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user