add put method to kontor-api
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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))
|
||||||
|
|||||||
Reference in New Issue
Block a user