diff --git a/alws/routers/platforms.py b/alws/routers/platforms.py index ed2d779a..58868f85 100644 --- a/alws/routers/platforms.py +++ b/alws/routers/platforms.py @@ -38,11 +38,22 @@ async def modify_platform( return await pl_crud.modify_platform(db, platform) -@public_router.get('/', response_model=typing.List[platform_schema.Platform]) +@public_router.get( + '/', response_model=typing.List[platform_schema.PlatformResponse] +) async def get_platforms( db: AsyncSession = Depends(AsyncSessionDependency(key=get_async_db_key())), ): - return await pl_crud.get_platforms(db) + platforms = await pl_crud.get_platforms(db) + return [ + { + **platform_schema.PlatformResponse.from_orm(platform).dict( + exclude={"data"} + ), + "data": {"versions": (platform.data or {}).get("versions", [])}, + } + for platform in platforms + ] @router.patch( diff --git a/alws/schemas/platform_schema.py b/alws/schemas/platform_schema.py index c2d42a7b..8297196a 100644 --- a/alws/schemas/platform_schema.py +++ b/alws/schemas/platform_schema.py @@ -54,16 +54,10 @@ class Platform(BaseModel): pgp_key: typing.Optional[str] = None arch_list: typing.List[str] modularity: typing.Optional[typing.Dict] = None - # We're only going to take versions from 'data' column - data: typing.Optional[typing.Dict[str, typing.Any]] = None - - @root_validator(pre=True) - def filter_data_to_versions_only(cls, values): - if hasattr(values, 'data'): - raw_data = values.data - versions = raw_data.get("versions") - values.data = {"versions": versions} if versions else {} - return values class Config: from_attributes = True + + +class PlatformResponse(Platform): + data: typing.Optional[typing.Dict[str, typing.Any]] = None