refactor: use query functions instead of direct ORM modifications in service layer

Add update_asset_info_name and update_asset_info_updated_at query functions
and update asset_management.py to use them instead of modifying ORM objects
directly. This ensures the service layer only uses explicit operations from
the queries package.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Luke Mino-Altherr
2026-02-03 18:44:23 -08:00
parent cff2f43bb8
commit 1b169a2b2e
3 changed files with 36 additions and 3 deletions

View File

@@ -18,6 +18,8 @@ from app.assets.database.queries.asset_info import (
fetch_asset_info_asset_and_tags,
fetch_asset_info_and_asset,
update_asset_info_access_time,
update_asset_info_name,
update_asset_info_updated_at,
set_asset_info_metadata,
delete_asset_info_by_id,
set_asset_info_preview,
@@ -68,6 +70,8 @@ __all__ = [
"fetch_asset_info_asset_and_tags",
"fetch_asset_info_and_asset",
"update_asset_info_access_time",
"update_asset_info_name",
"update_asset_info_updated_at",
"set_asset_info_metadata",
"delete_asset_info_by_id",
"set_asset_info_preview",

View File

@@ -400,6 +400,34 @@ def update_asset_info_access_time(
session.execute(stmt.values(last_access_time=ts))
def update_asset_info_name(
session: Session,
asset_info_id: str,
name: str,
) -> None:
"""Update the name of an AssetInfo."""
now = get_utc_now()
session.execute(
sa.update(AssetInfo)
.where(AssetInfo.id == asset_info_id)
.values(name=name, updated_at=now)
)
def update_asset_info_updated_at(
session: Session,
asset_info_id: str,
ts: datetime | None = None,
) -> None:
"""Update the updated_at timestamp of an AssetInfo."""
ts = ts or get_utc_now()
session.execute(
sa.update(AssetInfo)
.where(AssetInfo.id == asset_info_id)
.values(updated_at=ts)
)
def set_asset_info_metadata(
session: Session,
asset_info_id: str,

View File

@@ -29,6 +29,8 @@ from app.assets.database.queries import (
set_asset_info_metadata,
set_asset_info_preview,
set_asset_info_tags,
update_asset_info_name,
update_asset_info_updated_at,
)
@@ -78,7 +80,7 @@ def update_asset_metadata(
touched = False
if name is not None and name != info.name:
info.name = name
update_asset_info_name(session, asset_info_id=asset_info_id, name=name)
touched = True
# Compute filename from best live path
@@ -111,8 +113,7 @@ def update_asset_metadata(
touched = True
if touched and user_metadata is None:
info.updated_at = get_utc_now()
session.flush()
update_asset_info_updated_at(session, asset_info_id=asset_info_id)
# Fetch updated info with tags
result = fetch_asset_info_asset_and_tags(