mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-01-11 06:40:48 +08:00
* Brought over minimal elements from PR 10045 to reproduce seed_assets and register_assets_system without adding anything to the DB or server routes yet, for now making everything sync (can introduce async once everything is cleaned up and brought over) * Added db script to insert assets stuff, cleaned up some code; assets (models) now get added/rescanned * Added support for 5 http endpoints for assets * Replaced Optional with | None in schemas_in.py and schemas_out.py * Remove two routes that will not be relevant yet in this PR: HEAD /api/assets/hash/<hash> and PUT /api/assets/<id>/preview * Remove some functions the two deleted endpoints were using * Don't show assets scan message upon calling /object_info endpoint * removed unsued import to satisfy ruff * Simplified hashing function tpye hint and _hash_file_obj * Satisfied ruff
61 lines
1.5 KiB
Python
61 lines
1.5 KiB
Python
from datetime import datetime
|
|
from typing import Any
|
|
|
|
from pydantic import BaseModel, ConfigDict, Field, field_serializer
|
|
|
|
|
|
class AssetSummary(BaseModel):
|
|
id: str
|
|
name: str
|
|
asset_hash: str | None = None
|
|
size: int | None = None
|
|
mime_type: str | None = None
|
|
tags: list[str] = Field(default_factory=list)
|
|
preview_url: str | None = None
|
|
created_at: datetime | None = None
|
|
updated_at: datetime | None = None
|
|
last_access_time: datetime | None = None
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
@field_serializer("created_at", "updated_at", "last_access_time")
|
|
def _ser_dt(self, v: datetime | None, _info):
|
|
return v.isoformat() if v else None
|
|
|
|
|
|
class AssetsList(BaseModel):
|
|
assets: list[AssetSummary]
|
|
total: int
|
|
has_more: bool
|
|
|
|
|
|
class AssetDetail(BaseModel):
|
|
id: str
|
|
name: str
|
|
asset_hash: str | None = None
|
|
size: int | None = None
|
|
mime_type: str | None = None
|
|
tags: list[str] = Field(default_factory=list)
|
|
user_metadata: dict[str, Any] = Field(default_factory=dict)
|
|
preview_id: str | None = None
|
|
created_at: datetime | None = None
|
|
last_access_time: datetime | None = None
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
@field_serializer("created_at", "last_access_time")
|
|
def _ser_dt(self, v: datetime | None, _info):
|
|
return v.isoformat() if v else None
|
|
|
|
|
|
class TagUsage(BaseModel):
|
|
name: str
|
|
count: int
|
|
type: str
|
|
|
|
|
|
class TagsList(BaseModel):
|
|
tags: list[TagUsage] = Field(default_factory=list)
|
|
total: int
|
|
has_more: bool
|