Finished @ROUTES.post(f"/api/assets/{{id:{UUID_RE}}}/tags")

This commit is contained in:
Jedrzej Kosinski
2026-01-16 00:45:36 -08:00
parent 63c98d0c75
commit 9e3f559189
5 changed files with 172 additions and 26 deletions

View File

@@ -20,6 +20,7 @@ from app.assets.database.queries import (
list_asset_infos_page,
list_tags_with_usage,
get_asset_tags,
add_tags_to_asset_info,
pick_best_live_path,
ingest_fs_asset,
set_asset_info_preview,
@@ -434,6 +435,31 @@ def create_asset_from_hash(
)
def add_tags_to_asset(
*,
asset_info_id: str,
tags: list[str],
origin: str = "manual",
owner_id: str = "",
) -> schemas_out.TagsAdd:
with create_session() as session:
info_row = get_asset_info_by_id(session, asset_info_id=asset_info_id)
if not info_row:
raise ValueError(f"AssetInfo {asset_info_id} not found")
if info_row.owner_id and info_row.owner_id != owner_id:
raise PermissionError("not owner")
data = add_tags_to_asset_info(
session,
asset_info_id=asset_info_id,
tags=tags,
origin=origin,
create_if_missing=True,
asset_info_row=info_row,
)
session.commit()
return schemas_out.TagsAdd(**data)
def list_tags(
prefix: str | None = None,
limit: int = 100,