File tree Expand file tree Collapse file tree 1 file changed +30
-0
lines changed
services/storage/src/simcore_service_storage/modules/celery Expand file tree Collapse file tree 1 file changed +30
-0
lines changed Original file line number Diff line number Diff line change 1+ from functools import partial
12from pathlib import Path
3+ from typing import Any
24
35from kombu .utils .json import register_type # type: ignore[import-untyped]
6+ from models_library .api_schemas_storage .storage_schemas import (
7+ FileUploadCompletionBody ,
8+ FoldersBody ,
9+ )
10+ from pydantic import BaseModel
11+
12+ from ...models import FileMetaData
413
514
615def _path_encoder (obj ):
@@ -20,10 +29,31 @@ def _class_full_name(clz: type) -> str:
2029 return "." .join ([clz .__module__ , clz .__qualname__ ])
2130
2231
32+ def _encoder (obj : BaseModel , * args , ** kwargs ) -> dict [str , Any ]:
33+ return obj .model_dump (* args , ** kwargs , mode = "json" )
34+
35+
36+ def _decoder (clz : type [BaseModel ], data : dict [str , Any ]) -> BaseModel :
37+ return clz (** data )
38+
39+
40+ def _register_pydantic_types (* models : type [BaseModel ]) -> None :
41+ for model in models :
42+ register_type (
43+ model ,
44+ _class_full_name (model ),
45+ encoder = _encoder ,
46+ decoder = partial (_decoder , model ),
47+ )
48+
49+
2350def register_celery_types () -> None :
2451 register_type (
2552 Path ,
2653 _class_full_name (Path ),
2754 _path_encoder ,
2855 _path_decoder ,
2956 )
57+ _register_pydantic_types (FileUploadCompletionBody )
58+ _register_pydantic_types (FileMetaData )
59+ _register_pydantic_types (FoldersBody )
You can’t perform that action at this time.
0 commit comments