Spaces:
Running
Running
from uuid import UUID | |
from pydantic import BaseModel, field_validator | |
class TagResponse(BaseModel): | |
id: UUID | |
name: str | None | |
class UsersLikesResponse(BaseModel): | |
likes_count: int | None | |
liked_by_user: bool | None | |
class CreateComponentResponse(BaseModel): | |
id: UUID | |
class TagsIdResponse(BaseModel): | |
tags_id: TagResponse | None | |
class ListComponentResponse(BaseModel): | |
id: UUID | None = None | |
name: str | None = None | |
description: str | None = None | |
liked_by_count: int | None = None | |
liked_by_user: bool | None = None | |
is_component: bool | None = None | |
metadata: dict | None = {} | |
user_created: dict | None = {} | |
tags: list[TagResponse] | None = None | |
downloads_count: int | None = None | |
last_tested_version: str | None = None | |
private: bool | None = None | |
# tags comes as a TagsIdResponse but we want to return a list of TagResponse | |
def tags_to_list(cls, v): | |
# Check if all values are have id and name | |
# if so, return v else transform to TagResponse | |
if not v: | |
return v | |
if all("id" in tag and "name" in tag for tag in v): | |
return v | |
return [TagResponse(**tag.get("tags_id")) for tag in v if tag.get("tags_id")] | |
class ListComponentResponseModel(BaseModel): | |
count: int | None = 0 | |
authorized: bool | |
results: list[ListComponentResponse] | None | |
class DownloadComponentResponse(BaseModel): | |
id: UUID | |
name: str | None | |
description: str | None | |
data: dict | None | |
is_component: bool | None | |
metadata: dict | None = {} | |
class StoreComponentCreate(BaseModel): | |
name: str | |
description: str | None | |
data: dict | |
tags: list[str] | None | |
parent: UUID | None = None | |
is_component: bool | None | |
last_tested_version: str | None = None | |
private: bool | None = True | |