diff --git a/kontor-api/src/apis/version1/media/actor.py b/kontor-api/src/apis/version1/media/actor.py index 86c5bd1..96d3ac7 100644 --- a/kontor-api/src/apis/version1/media/actor.py +++ b/kontor-api/src/apis/version1/media/actor.py @@ -4,7 +4,12 @@ from fastapi import APIRouter, status, HTTPException from src.core.log_conf import logger from src.db.repository.media.actor import delete_mediaactor, import_mediaactor from src.db.session import SessionDep -from src.schema.media.actor import MediaActorModel, MediaActorResponse, actor_to_response +from src.schema.media.actor import ( + MediaActorModel, + MediaActorResponse, + actor_to_response, + actor_to_model +) from src.db.models.media import MediaActor router = APIRouter() @@ -26,6 +31,23 @@ def get_actor(actor_id: str, db: SessionDep) -> MediaActorResponse: response = actor_to_response(media_actor) return response +@router.put("/actors/{actor_id}", response_model=MediaActorResponse) +def update_actor(actor_id: str, db:SessionDep, info: MediaActorResponse) -> MediaActorResponse: + """ + Update MediaActor with given id and data. + """ + media_actor = db.get(MediaActor, actor_id) + if not media_actor: + raise HTTPException(status_code=404, detail="MediaActor could not be found") + actor_to_model(info, media_actor) + db.add(media_actor) + db.commit() + mediaactor = db.get(MediaActor, actor_id) + if not mediaactor: + raise HTTPException(status_code=404, detail="MediaActor could not be found") + response = actor_to_response(mediaactor) + return response + @router.delete("/actors/{actor_id}", status_code=status.HTTP_204_NO_CONTENT) def delete_actor(actor_id: str, db: SessionDep): media_actor = db.get(MediaActor, actor_id) diff --git a/kontor-scripts/sync.py b/kontor-scripts/sync.py index 0b91e86..b8646ad 100644 --- a/kontor-scripts/sync.py +++ b/kontor-scripts/sync.py @@ -6,7 +6,7 @@ import json from argparse import ArgumentDefaultsHelpFormatter, ArgumentParser from logging import Logger from typing import Dict, List - +from diskcache import Index from api import ( MAPPING, EndPointNotAvailableException, @@ -66,9 +66,10 @@ if __name__ == "__main__": export_data = {} for server in server_list: export_data[server.name] = {} + index = Index(f"/tmp/sync-{server.name}") for table, path in MAPPING.items(): try: - data = server.request(logger, table=table) + data = server.request(logger, table=table, index=index) logger.info("%s: %s", table, len(data)) export_data[server.name][table] = data logger.info("%s: %s exported", table, len(data))