mirror of
https://github.com/tcsenpai/pensieve.git
synced 2025-06-07 03:35:24 +00:00
refactor(entity): make entity a root resource
This commit is contained in:
parent
9d6977ac4f
commit
107f7d06c2
@ -105,7 +105,7 @@ async def trigger_webhooks(library, entity, request):
|
|||||||
if plugin.webhook_url:
|
if plugin.webhook_url:
|
||||||
location = str(
|
location = str(
|
||||||
request.url_for(
|
request.url_for(
|
||||||
"get_entity_by_id", library_id=library.id, entity_id=entity.id
|
"get_entity_by_id", entity_id=entity.id
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
task = client.post(
|
task = client.post(
|
||||||
@ -182,8 +182,18 @@ def get_entity_by_filepath(
|
|||||||
return entity
|
return entity
|
||||||
|
|
||||||
|
|
||||||
|
@app.get("/entities/{entity_id}", response_model=Entity)
|
||||||
|
def get_entity_by_id(entity_id: int, db: Session = Depends(get_db)):
|
||||||
|
entity = crud.get_entity_by_id(entity_id, db)
|
||||||
|
if entity is None:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_404_NOT_FOUND, detail="Entity not found"
|
||||||
|
)
|
||||||
|
return entity
|
||||||
|
|
||||||
|
|
||||||
@app.get("/libraries/{library_id}/entities/{entity_id}", response_model=Entity)
|
@app.get("/libraries/{library_id}/entities/{entity_id}", response_model=Entity)
|
||||||
def get_entity_by_id(library_id: int, entity_id: int, db: Session = Depends(get_db)):
|
def get_entity_by_id_in_library(library_id: int, entity_id: int, db: Session = Depends(get_db)):
|
||||||
entity = crud.get_entity_by_id(entity_id, db)
|
entity = crud.get_entity_by_id(entity_id, db)
|
||||||
if entity is None or entity.library_id != library_id:
|
if entity is None or entity.library_id != library_id:
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
@ -192,9 +202,8 @@ def get_entity_by_id(library_id: int, entity_id: int, db: Session = Depends(get_
|
|||||||
return entity
|
return entity
|
||||||
|
|
||||||
|
|
||||||
@app.put("/libraries/{library_id}/entities/{entity_id}", response_model=Entity)
|
@app.put("/entities/{entity_id}", response_model=Entity)
|
||||||
async def update_entity(
|
async def update_entity(
|
||||||
library_id: int,
|
|
||||||
entity_id: int,
|
entity_id: int,
|
||||||
updated_entity: UpdateEntityParam,
|
updated_entity: UpdateEntityParam,
|
||||||
request: Request,
|
request: Request,
|
||||||
@ -202,37 +211,35 @@ async def update_entity(
|
|||||||
trigger_webhooks_flag: bool = False,
|
trigger_webhooks_flag: bool = False,
|
||||||
):
|
):
|
||||||
entity = crud.get_entity_by_id(entity_id, db)
|
entity = crud.get_entity_by_id(entity_id, db)
|
||||||
if entity is None or entity.library_id != library_id:
|
if entity is None:
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=status.HTTP_404_NOT_FOUND,
|
status_code=status.HTTP_404_NOT_FOUND,
|
||||||
detail="Entity not found in the specified library",
|
detail="Entity not found",
|
||||||
)
|
|
||||||
|
|
||||||
library = crud.get_library_by_id(library_id, db)
|
|
||||||
if library is None:
|
|
||||||
raise HTTPException(
|
|
||||||
status_code=status.HTTP_404_NOT_FOUND, detail="Library not found"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
entity = crud.update_entity(entity_id, updated_entity, db)
|
entity = crud.update_entity(entity_id, updated_entity, db)
|
||||||
if trigger_webhooks_flag:
|
if trigger_webhooks_flag:
|
||||||
|
library = crud.get_library_by_id(entity.library_id, db)
|
||||||
|
if library is None:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_404_NOT_FOUND, detail="Library not found"
|
||||||
|
)
|
||||||
await trigger_webhooks(library, entity, request)
|
await trigger_webhooks(library, entity, request)
|
||||||
return entity
|
return entity
|
||||||
|
|
||||||
|
|
||||||
@app.patch("/libraries/{library_id}/entities/{entity_id}/tags", response_model=Entity)
|
@app.patch("/entities/{entity_id}/tags", response_model=Entity)
|
||||||
@app.put("/libraries/{library_id}/entities/{entity_id}/tags", response_model=Entity)
|
@app.put("/entities/{entity_id}/tags", response_model=Entity)
|
||||||
def patch_entity_tags(
|
def patch_entity_tags(
|
||||||
library_id: int,
|
|
||||||
entity_id: int,
|
entity_id: int,
|
||||||
update_tags: UpdateEntityTagsParam,
|
update_tags: UpdateEntityTagsParam,
|
||||||
db: Session = Depends(get_db)
|
db: Session = Depends(get_db)
|
||||||
):
|
):
|
||||||
entity = crud.get_entity_by_id(entity_id, db)
|
entity = crud.get_entity_by_id(entity_id, db)
|
||||||
if entity is None or entity.library_id != library_id:
|
if entity is None:
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=status.HTTP_404_NOT_FOUND,
|
status_code=status.HTTP_404_NOT_FOUND,
|
||||||
detail="Entity not found in the specified library",
|
detail="Entity not found",
|
||||||
)
|
)
|
||||||
|
|
||||||
# Use the CRUD function to update the tags
|
# Use the CRUD function to update the tags
|
||||||
@ -240,18 +247,17 @@ def patch_entity_tags(
|
|||||||
return entity
|
return entity
|
||||||
|
|
||||||
|
|
||||||
@app.patch("/libraries/{library_id}/entities/{entity_id}/metadata", response_model=Entity)
|
@app.patch("/entities/{entity_id}/metadata", response_model=Entity)
|
||||||
def patch_entity_metadata(
|
def patch_entity_metadata(
|
||||||
library_id: int,
|
|
||||||
entity_id: int,
|
entity_id: int,
|
||||||
update_metadata: UpdateEntityMetadataParam,
|
update_metadata: UpdateEntityMetadataParam,
|
||||||
db: Session = Depends(get_db)
|
db: Session = Depends(get_db)
|
||||||
):
|
):
|
||||||
entity = crud.get_entity_by_id(entity_id, db)
|
entity = crud.get_entity_by_id(entity_id, db)
|
||||||
if entity is None or entity.library_id != library_id:
|
if entity is None:
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=status.HTTP_404_NOT_FOUND,
|
status_code=status.HTTP_404_NOT_FOUND,
|
||||||
detail="Entity not found in the specified library",
|
detail="Entity not found",
|
||||||
)
|
)
|
||||||
|
|
||||||
# Use the CRUD function to update the metadata entries
|
# Use the CRUD function to update the metadata entries
|
||||||
|
@ -199,7 +199,7 @@ def test_update_entity(client):
|
|||||||
file_type="text/markdown",
|
file_type="text/markdown",
|
||||||
)
|
)
|
||||||
update_response = client.put(
|
update_response = client.put(
|
||||||
f"/libraries/{library_id}/entities/{entity_id}",
|
f"/entities/{entity_id}",
|
||||||
json=updated_entity.model_dump(mode="json"),
|
json=updated_entity.model_dump(mode="json"),
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -216,22 +216,12 @@ def test_update_entity(client):
|
|||||||
|
|
||||||
# Test for entity not found
|
# Test for entity not found
|
||||||
invalid_update_response = client.put(
|
invalid_update_response = client.put(
|
||||||
f"/libraries/{library_id}/entities/9999",
|
f"/entities/9999",
|
||||||
json=updated_entity.model_dump(mode="json"),
|
json=updated_entity.model_dump(mode="json"),
|
||||||
)
|
)
|
||||||
assert invalid_update_response.status_code == 404
|
assert invalid_update_response.status_code == 404
|
||||||
assert invalid_update_response.json() == {
|
assert invalid_update_response.json() == {
|
||||||
"detail": "Entity not found in the specified library"
|
"detail": "Entity not found"
|
||||||
}
|
|
||||||
|
|
||||||
# Test for library not found
|
|
||||||
invalid_update_response = client.put(
|
|
||||||
f"/libraries/9999/entities/{entity_id}",
|
|
||||||
json=updated_entity.model_dump(mode="json"),
|
|
||||||
)
|
|
||||||
assert invalid_update_response.status_code == 404
|
|
||||||
assert invalid_update_response.json() == {
|
|
||||||
"detail": "Entity not found in the specified library"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -461,7 +451,7 @@ def test_update_entity_with_tags(client):
|
|||||||
|
|
||||||
# Make a PUT request to the /libraries/{library_id}/entities/{entity_id} endpoint
|
# Make a PUT request to the /libraries/{library_id}/entities/{entity_id} endpoint
|
||||||
update_response = client.put(
|
update_response = client.put(
|
||||||
f"/libraries/{library_id}/entities/{entity_id}",
|
f"/entities/{entity_id}",
|
||||||
json=update_entity_param.model_dump(mode="json"),
|
json=update_entity_param.model_dump(mode="json"),
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -490,7 +480,7 @@ def test_add_metadata_entry_to_entity_success(client):
|
|||||||
|
|
||||||
# Make a PUT request to the /libraries/{library_id}/entities/{entity_id} endpoint
|
# Make a PUT request to the /libraries/{library_id}/entities/{entity_id} endpoint
|
||||||
update_response = client.put(
|
update_response = client.put(
|
||||||
f"/libraries/{library_id}/entities/{entity_id}",
|
f"/entities/{entity_id}",
|
||||||
json=update_entity_param.model_dump(mode="json"),
|
json=update_entity_param.model_dump(mode="json"),
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -516,7 +506,7 @@ def test_update_entity_tags(client):
|
|||||||
|
|
||||||
# Make a PUT request to the /libraries/{library_id}/entities/{entity_id} endpoint
|
# Make a PUT request to the /libraries/{library_id}/entities/{entity_id} endpoint
|
||||||
update_response = client.put(
|
update_response = client.put(
|
||||||
f"/libraries/{library_id}/entities/{entity_id}",
|
f"/entities/{entity_id}",
|
||||||
json=update_entity_param.model_dump(mode="json"),
|
json=update_entity_param.model_dump(mode="json"),
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -555,7 +545,7 @@ def test_patch_entity_metadata_entries(client):
|
|||||||
|
|
||||||
# Make a PUT request to the /libraries/{library_id}/entities/{entity_id} endpoint
|
# Make a PUT request to the /libraries/{library_id}/entities/{entity_id} endpoint
|
||||||
patch_response = client.put(
|
patch_response = client.put(
|
||||||
f"/libraries/{library_id}/entities/{entity_id}",
|
f"/entities/{entity_id}",
|
||||||
json=update_entity_param.model_dump(mode="json"),
|
json=update_entity_param.model_dump(mode="json"),
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -584,7 +574,7 @@ def test_patch_entity_metadata_entries(client):
|
|||||||
|
|
||||||
# Make a PATCH request to the /libraries/{library_id}/entities/{entity_id}/metadata endpoint
|
# Make a PATCH request to the /libraries/{library_id}/entities/{entity_id}/metadata endpoint
|
||||||
update_response = client.patch(
|
update_response = client.patch(
|
||||||
f"/libraries/{library_id}/entities/{entity_id}/metadata",
|
f"/entities/{entity_id}/metadata",
|
||||||
json=update_entity_param.model_dump(mode="json"),
|
json=update_entity_param.model_dump(mode="json"),
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -616,7 +606,7 @@ def test_patch_entity_metadata_entries(client):
|
|||||||
|
|
||||||
# Make a PATCH request to the /libraries/{library_id}/entities/{entity_id}/metadata endpoint
|
# Make a PATCH request to the /libraries/{library_id}/entities/{entity_id}/metadata endpoint
|
||||||
update_response = client.patch(
|
update_response = client.patch(
|
||||||
f"/libraries/{library_id}/entities/{entity_id}/metadata",
|
f"/entities/{entity_id}/metadata",
|
||||||
json=update_entity_param.model_dump(mode="json"),
|
json=update_entity_param.model_dump(mode="json"),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user