33from fastapi import APIRouter
44
55from app .db .utils import RESOURCE_TYPE_TO_CLASS
6+ from app .dependencies .common import PaginationQuery
67from app .dependencies .db import RepoGroupDep , SessionDep
78from app .dependencies .s3 import StorageClientFactoryDep
9+ from app .filters .asset import AssetFilterDep
810from app .queries .common import router_delete_one
911from app .schemas .asset import (
1012 AssetRead ,
1113)
12- from app .service import asset as asset_service
14+ from app .schemas .types import ListResponse
15+ from app .service import admin as admin_service , asset as asset_service
1316from app .utils .routers import EntityRoute , ResourceRoute , entity_route_to_type , route_to_type
1417
1518router = APIRouter (
@@ -33,6 +36,39 @@ def delete_one(
3336 )
3437
3538
39+ @router .get ("/{entity_route}/{entity_id}/assets/{asset_id}" )
40+ def get_entity_asset (
41+ repos : RepoGroupDep ,
42+ entity_route : EntityRoute ,
43+ entity_id : uuid .UUID ,
44+ asset_id : uuid .UUID ,
45+ ) -> AssetRead :
46+ """Return an asset associated with a specific entity."""
47+ return admin_service .get_entity_asset (
48+ repos = repos ,
49+ entity_type = entity_route_to_type (entity_route ),
50+ entity_id = entity_id ,
51+ asset_id = asset_id ,
52+ )
53+
54+
55+ @router .get ("/{entity_route}/{entity_id}/assets" )
56+ def get_entity_assets (
57+ repos : RepoGroupDep ,
58+ entity_route : EntityRoute ,
59+ entity_id : uuid .UUID ,
60+ pagination_request : PaginationQuery ,
61+ filter_model : AssetFilterDep ,
62+ ) -> ListResponse [AssetRead ]:
63+ return admin_service .get_entity_assets (
64+ repos = repos ,
65+ entity_route = entity_route ,
66+ entity_id = entity_id ,
67+ pagination_request = pagination_request ,
68+ filter_model = filter_model ,
69+ )
70+
71+
3672@router .delete ("/{entity_route}/{entity_id}/assets/{asset_id}" )
3773def delete_entity_asset (
3874 repos : RepoGroupDep ,
0 commit comments