diff --git a/kontor-api/src/apis/version1/media/mediaactorfile.py b/kontor-api/src/apis/version1/media/mediaactorfile.py index 3a8ddb6..4748c93 100644 --- a/kontor-api/src/apis/version1/media/mediaactorfile.py +++ b/kontor-api/src/apis/version1/media/mediaactorfile.py @@ -1,9 +1,10 @@ from typing import List from fastapi import APIRouter, status, HTTPException +from src.core.log_conf import logger from src.db.models.media import MediaActorFile -from src.db.repository.media.actorfile import delete_mediaactorfile +from src.db.repository.media.actorfile import delete_mediaactorfile, import_mediaactorfile from src.db.session import SessionDep -from src.schema.media.actorfile import MediaActorFileResponse, actorfile_to_response +from src.schema.media.actorfile import MediaActorFileModel, MediaActorFileResponse, actorfile_to_response router = APIRouter() @@ -30,3 +31,13 @@ def delete_actorfile(actorfile_id: str, db: SessionDep): if not media_actorfile: raise HTTPException(status_code=404, detail="MediaActor could not be found") delete_mediaactorfile(db, media_actorfile.id) + +@router.post("/actorfiles", status_code=status.HTTP_201_CREATED) +def add_actorfile(new_actorfile: MediaActorFileModel, db: SessionDep) -> MediaActorFileResponse: + logger.info("add actorfile %s - %s", new_actorfile.media_actor_id, new_actorfile.media_file_id) + try: + mediaActorFile: MediaActorFile = import_mediaactorfile(db, new_actorfile) + except Exception as exception: + raise HTTPException(status_code=409, detail=f"Link duplicate: {exception}") + response = actorfile_to_response(mediaActorFile) + return response diff --git a/kontor-api/src/db/repository/media/actorfile.py b/kontor-api/src/db/repository/media/actorfile.py index 43d3c8e..9371e38 100644 --- a/kontor-api/src/db/repository/media/actorfile.py +++ b/kontor-api/src/db/repository/media/actorfile.py @@ -46,4 +46,19 @@ def import_mediaactorfile( """ logger.info("import MediaActorFile with %s", new_actorfile) media_actor_file: MediaActorFile = MediaActorFile() + media_actor_file.id = new_actorfile.id + if new_actorfile.created_date: + media_actor_file.created_date = new_actorfile.created_date + else: + media_actor_file.created_date = datetime.now() + if new_actorfile.last_modified_date: + media_actor_file.last_modified_date = new_actorfile.last_modified_date + else: + media_actor_file.last_modified_date = datetime.now() + media_actor_file.version = new_actorfile.version + media_actor_file.media_actor_id = new_actorfile.media_actor_id + media_actor_file.media_file_id = new_actorfile.media_file_id + db.add(media_actor_file) + db.commit() + db.refresh(media_actor_file) return media_actor_file diff --git a/kontor-scripts/add_links.py b/kontor-scripts/add_links.py index 35772dd..e7a299b 100644 --- a/kontor-scripts/add_links.py +++ b/kontor-scripts/add_links.py @@ -169,6 +169,7 @@ if __name__ == "__main__": actor_urls: List[str] = get_meta_info(media_file, logger) if not args.dry_run: logger.info("add MediaFile %s", media_file) + server.create(logger, "media_file", media_file.export_dict()) for actor_url in actor_urls: if actor_url in actor_mapping: media_actor: Optional[MediaActor] = actor_mapping[actor_url] @@ -179,10 +180,11 @@ if __name__ == "__main__": media_actor_file.last_modified_date = datetime.now() media_actor_file.version = 0 media_actor_file.media_file_id = media_file.id - media_actor_file.media_actor_id = media_actor.id + media_actor_file.media_actor_id = media_actor["id"] logger.info("create mapping with %s", media_actor_file) if not args.dry_run: logger.info("add MediaFile Actor mapping %s", media_actor_file) + server.create(logger, "media_actor_file", media_actor_file.export_dict()) else: actor_name = get_actor_name(actor_url, logger) if actor_name in actorname_mapping: @@ -198,6 +200,7 @@ if __name__ == "__main__": logger.info("update MediaActor with %s", repr(media_actor)) if not args.dry_run: logger.info("Update MediaActor %s", media_actor) + server.create(logger, "media_actor", media_actor.export_dict()) media_actor_file = MediaActorFile() media_actor_file.id = str(uuid.uuid4()) media_actor_file.created_date = datetime.now()