Change preview_id to reference asset by reference ID, not content ID

Clients receive preview_id in API responses but could not dereference it
through public routes (which use reference IDs). Now preview_id is a
self-referential FK to asset_references.id so the value is directly
usable in the public API.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Luke Mino-Altherr
2026-03-12 14:33:29 -07:00
parent 1ed31e232b
commit 0c4f1e349b
9 changed files with 91 additions and 38 deletions

View File

@@ -116,7 +116,7 @@ def update_asset_metadata(
set_reference_preview(
session,
reference_id=reference_id,
preview_asset_id=preview_id,
preview_reference_id=preview_id,
)
touched = True
@@ -202,7 +202,7 @@ def delete_asset_reference(
def set_asset_preview(
reference_id: str,
preview_asset_id: str | None = None,
preview_reference_id: str | None = None,
owner_id: str = "",
) -> AssetDetailResult:
with create_session() as session:
@@ -211,7 +211,7 @@ def set_asset_preview(
set_reference_preview(
session,
reference_id=reference_id,
preview_asset_id=preview_asset_id,
preview_reference_id=preview_reference_id,
)
result = fetch_reference_asset_and_tags(

View File

@@ -11,10 +11,10 @@ from app.assets.database.queries import (
add_tags_to_reference,
fetch_reference_and_asset,
get_asset_by_hash,
get_existing_asset_ids,
get_reference_by_file_path,
get_reference_tags,
get_or_create_reference,
reference_exists,
remove_missing_tag_for_asset_id,
set_reference_metadata,
set_reference_tags,
@@ -66,7 +66,7 @@ def _ingest_file_from_path(
with create_session() as session:
if preview_id:
if preview_id not in get_existing_asset_ids(session, [preview_id]):
if not reference_exists(session, preview_id):
preview_id = None
asset, asset_created, asset_updated = upsert_asset(