add put method to kontor-api
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 4s
Gitea Actions Demo / build-and-test (push) Failing after 14m45s

This commit is contained in:
Thomas Peetz
2026-10-26 12:31:30 +01:00
parent 2889927416
commit 9ab4f2103f
2 changed files with 26 additions and 3 deletions
+23 -1
View File
@@ -4,7 +4,12 @@ from fastapi import APIRouter, status, HTTPException
from src.core.log_conf import logger from src.core.log_conf import logger
from src.db.repository.media.actor import delete_mediaactor, import_mediaactor from src.db.repository.media.actor import delete_mediaactor, import_mediaactor
from src.db.session import SessionDep 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 from src.db.models.media import MediaActor
router = APIRouter() router = APIRouter()
@@ -26,6 +31,23 @@ def get_actor(actor_id: str, db: SessionDep) -> MediaActorResponse:
response = actor_to_response(media_actor) response = actor_to_response(media_actor)
return response 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) @router.delete("/actors/{actor_id}", status_code=status.HTTP_204_NO_CONTENT)
def delete_actor(actor_id: str, db: SessionDep): def delete_actor(actor_id: str, db: SessionDep):
media_actor = db.get(MediaActor, actor_id) media_actor = db.get(MediaActor, actor_id)
+3 -2
View File
@@ -6,7 +6,7 @@ import json
from argparse import ArgumentDefaultsHelpFormatter, ArgumentParser from argparse import ArgumentDefaultsHelpFormatter, ArgumentParser
from logging import Logger from logging import Logger
from typing import Dict, List from typing import Dict, List
from diskcache import Index
from api import ( from api import (
MAPPING, MAPPING,
EndPointNotAvailableException, EndPointNotAvailableException,
@@ -66,9 +66,10 @@ if __name__ == "__main__":
export_data = {} export_data = {}
for server in server_list: for server in server_list:
export_data[server.name] = {} export_data[server.name] = {}
index = Index(f"/tmp/sync-{server.name}")
for table, path in MAPPING.items(): for table, path in MAPPING.items():
try: try:
data = server.request(logger, table=table) data = server.request(logger, table=table, index=index)
logger.info("%s: %s", table, len(data)) logger.info("%s: %s", table, len(data))
export_data[server.name][table] = data export_data[server.name][table] = data
logger.info("%s: %s exported", table, len(data)) logger.info("%s: %s exported", table, len(data))