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 @@ -458,3 +458,31 @@ def _update_json_schema_extra(schema: JsonDict) -> None:
458458 model_config = ConfigDict (
459459 extra = "forbid" , json_schema_extra = _update_json_schema_extra
460460 )
461+
462+
463+ class PathTotalSizeCreate (BaseModel ):
464+ path : Path
465+ size : ByteSize
466+
467+ @staticmethod
468+ def _update_json_schema_extra (schema : JsonDict ) -> None :
469+ schema .update (
470+ {
471+ "examples" : [
472+ # a folder
473+ {
474+ "path" : "f8da77a9-24b9-4eab-aee7-1f0608da1e3e" ,
475+ "size" : 15728640 ,
476+ },
477+ # 1 file
478+ {
479+ "path" : f"f8da77a9-24b9-4eab-aee7-1f0608da1e3e/2f94f80f-633e-4dfa-a983-226b7babe3d7/outputs/output5/{ FileMetaDataGet .model_json_schema ()['examples' ][0 ]['file_name' ]} " ,
480+ "size" : 1024 ,
481+ },
482+ ]
483+ }
484+ )
485+
486+ model_config = ConfigDict (
487+ extra = "forbid" , json_schema_extra = _update_json_schema_extra
488+ )
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
@@ -528,10 +531,11 @@ async def test_path_compute_size(
528531 ).with_query (user_id = user_id )
529532 response = await client .post (f"{ url } " )
530533
531- received_size , _ = assert_status (
534+ received , _ = assert_status (
532535 response ,
533536 status .HTTP_200_OK ,
534- ByteSize ,
537+ PathTotalSizeCreate ,
535538 )
536- assert received_size
537- assert received_size == 169
539+ assert received
540+ assert received .path == Path (project ["uuid" ])
541+ assert received .size == 169
You can’t perform that action at this time.
0 commit comments