File tree Expand file tree Collapse file tree 3 files changed +57
-6
lines changed
packages/models-library/src/models_library/api_schemas_storage
src/simcore_service_storage/api/rest Expand file tree Collapse file tree 3 files changed +57
-6
lines changed Original file line number Diff line number Diff line change @@ -455,3 +455,31 @@ def _update_json_schema_extra(schema: JsonDict) -> None:
455455 model_config = ConfigDict (
456456 extra = "forbid" , json_schema_extra = _update_json_schema_extra
457457 )
458+
459+
460+ class PathTotalSizeCreate (BaseModel ):
461+ path : Path
462+ size : ByteSize
463+
464+ @staticmethod
465+ def _update_json_schema_extra (schema : JsonDict ) -> None :
466+ schema .update (
467+ {
468+ "examples" : [
469+ # a folder
470+ {
471+ "path" : "f8da77a9-24b9-4eab-aee7-1f0608da1e3e" ,
472+ "size" : 15728640 ,
473+ },
474+ # 1 file
475+ {
476+ "path" : f"f8da77a9-24b9-4eab-aee7-1f0608da1e3e/2f94f80f-633e-4dfa-a983-226b7babe3d7/outputs/output5/{ FileMetaDataGet .model_json_schema ()['examples' ][0 ]['file_name' ]} " ,
477+ "size" : 1024 ,
478+ },
479+ ]
480+ }
481+ )
482+
483+ model_config = ConfigDict (
484+ extra = "forbid" , json_schema_extra = _update_json_schema_extra
485+ )
Original file line number Diff line number Diff line change 55from fastapi import APIRouter , Depends
66from fastapi_pagination import create_page
77from fastapi_pagination .cursor import CursorPage , CursorParams
8- from models_library .api_schemas_storage .storage_schemas import PathMetaDataGet
8+ from models_library .api_schemas_storage .storage_schemas import (
9+ PathMetaDataGet ,
10+ PathTotalSizeCreate ,
11+ )
12+ from models_library .generics import Envelope
913from models_library .users import UserID
14+ from pydantic import ByteSize
1015
1116from ...dsm_factory import BaseDataManager
1217from .dependencies .dsm_prodiver import get_data_manager
@@ -43,3 +48,17 @@ async def list_paths(
4348 params = page_params ,
4449 next_ = next_cursor ,
4550 )
51+
52+
53+ @router .post (
54+ "/locations/{location_id}/paths/{path:path}:size" ,
55+ response_model = Envelope [PathTotalSizeCreate ],
56+ )
57+ async def compute_path_total_size (
58+ dsm : Annotated [BaseDataManager , Depends (get_data_manager )],
59+ user_id : UserID ,
60+ path : Path ,
61+ ):
62+ return Envelope [PathTotalSizeCreate ](
63+ data = PathTotalSizeCreate (path = path , size = ByteSize (238723 ))
64+ )
Original file line number Diff line number Diff line change 1818import sqlalchemy as sa
1919from fastapi import FastAPI , status
2020from fastapi_pagination .cursor import CursorPage
21- from models_library .api_schemas_storage .storage_schemas import PathMetaDataGet
21+ from models_library .api_schemas_storage .storage_schemas import (
22+ PathMetaDataGet ,
23+ PathTotalSizeCreate ,
24+ )
2225from models_library .projects_nodes_io import LocationID , NodeID , SimcoreS3FileID
2326from models_library .users import UserID
2427from pydantic import ByteSize , TypeAdapter
@@ -482,10 +485,11 @@ async def test_path_compute_size(
482485 ).with_query (user_id = user_id )
483486 response = await client .post (f"{ url } " )
484487
485- received_size , _ = assert_status (
488+ received , _ = assert_status (
486489 response ,
487490 status .HTTP_200_OK ,
488- ByteSize ,
491+ PathTotalSizeCreate ,
489492 )
490- assert received_size
491- assert received_size == 169
493+ assert received
494+ assert received .path == Path (project ["uuid" ])
495+ assert received .size == 169
You can’t perform that action at this time.
0 commit comments