refactor: improve function naming for clarity and consistency

Rename functions to use clearer verb-based names:
- pick_best_live_path → select_best_live_path
- escape_like_prefix → escape_sql_like_string
- list_tree → list_files_recursively
- check_asset_file_fast → verify_asset_file_unchanged
- _seed_from_paths_batch → _batch_insert_assets_from_paths
- reconcile_cache_states_for_root → sync_cache_states_with_filesystem
- touch_asset_info_by_id → update_asset_info_access_time
- replace_asset_info_metadata_projection → set_asset_info_metadata
- expand_metadata_to_rows → convert_metadata_to_rows
- _rows_per_stmt → _calculate_rows_per_statement
- ensure_within_base → validate_path_within_base
- _cleanup_temp → _delete_temp_file_if_exists
- validate_hash_format → normalize_and_validate_hash
- get_relative_to_root_category_path_of_asset → get_asset_category_and_relative_path

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Luke Mino-Altherr
2026-02-03 14:20:36 -08:00
parent 481a2fa263
commit fef2f01671
15 changed files with 88 additions and 88 deletions

View File

@@ -13,7 +13,7 @@ from typing import Sequence
from app.assets.database.models import Asset
from app.database.db import create_session
from app.assets.helpers import pick_best_live_path, get_utc_now
from app.assets.helpers import select_best_live_path, get_utc_now
from app.assets.services.path_utils import compute_relative_filename
from app.assets.database.queries import (
asset_info_exists_for_asset_id,
@@ -21,7 +21,7 @@ from app.assets.database.queries import (
fetch_asset_info_asset_and_tags,
get_asset_info_by_id,
list_cache_states_by_asset_id,
replace_asset_info_metadata_projection,
set_asset_info_metadata,
set_asset_info_preview,
set_asset_info_tags,
)
@@ -83,7 +83,7 @@ def update_asset_metadata(
new_meta = dict(user_metadata)
if computed_filename:
new_meta["filename"] = computed_filename
replace_asset_info_metadata_projection(
set_asset_info_metadata(
session, asset_info_id=asset_info_id, user_metadata=new_meta
)
touched = True
@@ -93,7 +93,7 @@ def update_asset_metadata(
if current_meta.get("filename") != computed_filename:
new_meta = dict(current_meta)
new_meta["filename"] = computed_filename
replace_asset_info_metadata_projection(
set_asset_info_metadata(
session, asset_info_id=asset_info_id, user_metadata=new_meta
)
touched = True
@@ -217,5 +217,5 @@ def set_asset_preview(
def _compute_filename_for_asset(session, asset_id: str) -> str | None:
"""Compute the relative filename for an asset from its cache states."""
primary_path = pick_best_live_path(list_cache_states_by_asset_id(session, asset_id=asset_id))
primary_path = select_best_live_path(list_cache_states_by_asset_id(session, asset_id=asset_id))
return compute_relative_filename(primary_path) if primary_path else None

View File

@@ -13,14 +13,14 @@ from sqlalchemy import select
from app.assets.database.models import Asset, Tag
from app.database.db import create_session
from app.assets.helpers import normalize_tags, pick_best_live_path
from app.assets.helpers import normalize_tags, select_best_live_path
from app.assets.services.path_utils import compute_relative_filename
from app.assets.database.queries import (
get_asset_by_hash,
get_or_create_asset_info,
list_cache_states_by_asset_id,
remove_missing_tag_for_asset_id,
replace_asset_info_metadata_projection,
set_asset_info_metadata,
set_asset_info_tags,
update_asset_info_timestamps,
upsert_asset,
@@ -180,7 +180,7 @@ def register_existing_asset(
new_meta["filename"] = computed_filename
if new_meta:
replace_asset_info_metadata_projection(
set_asset_info_metadata(
session,
asset_info_id=info.id,
user_metadata=new_meta,
@@ -217,7 +217,7 @@ def _validate_tags_exist(session, tags: list[str]) -> None:
def _compute_filename_for_asset(session, asset_id: str) -> str | None:
"""Compute the relative filename for an asset from its cache states."""
primary_path = pick_best_live_path(list_cache_states_by_asset_id(session, asset_id=asset_id))
primary_path = select_best_live_path(list_cache_states_by_asset_id(session, asset_id=asset_id))
return compute_relative_filename(primary_path) if primary_path else None
@@ -240,7 +240,7 @@ def _update_metadata_with_filename(
new_meta["filename"] = computed_filename
if new_meta != current_meta:
replace_asset_info_metadata_projection(
set_asset_info_metadata(
session,
asset_info_id=asset_info_id,
user_metadata=new_meta,

View File

@@ -48,7 +48,7 @@ def resolve_destination_from_tags(tags: list[str]) -> tuple[str, list[str]]:
return base_dir, raw_subdirs if raw_subdirs else []
def ensure_within_base(candidate: str, base: str) -> None:
def validate_path_within_base(candidate: str, base: str) -> None:
cand_abs = os.path.abspath(candidate)
base_abs = os.path.abspath(base)
try:
@@ -69,7 +69,7 @@ def compute_relative_filename(file_path: str) -> str | None:
NOTE: this is a temporary helper, used only for initializing metadata["filename"] field.
"""
try:
root_category, rel_path = get_relative_to_root_category_path_of_asset(file_path)
root_category, rel_path = get_asset_category_and_relative_path(file_path)
except ValueError:
return None
@@ -85,7 +85,7 @@ def compute_relative_filename(file_path: str) -> str | None:
return "/".join(parts) # input/output: keep all parts
def get_relative_to_root_category_path_of_asset(file_path: str) -> tuple[Literal["input", "output", "models"], str]:
def get_asset_category_and_relative_path(file_path: str) -> tuple[Literal["input", "output", "models"], str]:
"""Given an absolute or relative file path, determine which root category the path belongs to:
- 'input' if the file resides under `folder_paths.get_input_directory()`
- 'output' if the file resides under `folder_paths.get_output_directory()`
@@ -143,7 +143,7 @@ def get_name_and_tags_from_asset_path(file_path: str) -> tuple[str, list[str]]:
"""Return a tuple (name, tags) derived from a filesystem path.
Semantics:
- Root category is determined by `get_relative_to_root_category_path_of_asset`.
- Root category is determined by `get_asset_category_and_relative_path`.
- The returned `name` is the base filename with extension from the relative path.
- The returned `tags` are:
[root_category] + parent folders of the relative path (in order)
@@ -155,7 +155,7 @@ def get_name_and_tags_from_asset_path(file_path: str) -> tuple[str, list[str]]:
Raises:
ValueError: if the path does not belong to input, output, or configured model bases.
"""
root_category, some_path = get_relative_to_root_category_path_of_asset(file_path)
root_category, some_path = get_asset_category_and_relative_path(file_path)
p = Path(some_path)
parent_parts = [part for part in p.parent.parts if part not in (".", "..", p.anchor)]
return p.name, list(dict.fromkeys(normalize_tags([root_category, *parent_parts])))

View File

@@ -38,7 +38,7 @@ from app.database.db import create_session, dependencies_available
RootType = Literal["models", "input", "output"]
def check_asset_file_fast(
def verify_asset_file_unchanged(
mtime_db: int | None,
size_db: int | None,
stat_result: os.stat_result,
@@ -54,7 +54,7 @@ def check_asset_file_fast(
return True
def list_tree(base_dir: str) -> list[str]:
def list_files_recursively(base_dir: str) -> list[str]:
out: list[str] = []
base_abs = os.path.abspath(base_dir)
if not os.path.isdir(base_abs):
@@ -99,7 +99,7 @@ def collect_models_files() -> list[str]:
return out
def _seed_from_paths_batch(
def _batch_insert_assets_from_paths(
session: Session,
specs: list[dict],
owner_id: str = "",
@@ -260,7 +260,7 @@ def prune_orphaned_assets(session, valid_prefixes: list[str]) -> int:
return delete_assets_by_ids(session, orphan_ids)
def reconcile_cache_states_for_root(
def sync_cache_states_with_filesystem(
session,
root: RootType,
collect_existing_paths: bool = False,
@@ -299,7 +299,7 @@ def reconcile_cache_states_for_root(
fast_ok = False
try:
exists = True
fast_ok = check_asset_file_fast(
fast_ok = verify_asset_file_unchanged(
mtime_db=row.mtime_ns,
size_db=acc["size_db"],
stat_result=os.stat(row.file_path, follow_symlinks=True),
@@ -385,7 +385,7 @@ def seed_assets(roots: tuple[RootType, ...], enable_logging: bool = False) -> No
for r in roots:
try:
with create_session() as sess:
survivors = reconcile_cache_states_for_root(
survivors = sync_cache_states_with_filesystem(
sess,
r,
collect_existing_paths=True,
@@ -410,9 +410,9 @@ def seed_assets(roots: tuple[RootType, ...], enable_logging: bool = False) -> No
if "models" in roots:
paths.extend(collect_models_files())
if "input" in roots:
paths.extend(list_tree(folder_paths.get_input_directory()))
paths.extend(list_files_recursively(folder_paths.get_input_directory()))
if "output" in roots:
paths.extend(list_tree(folder_paths.get_output_directory()))
paths.extend(list_files_recursively(folder_paths.get_output_directory()))
specs: list[dict] = []
tag_pool: set[str] = set()
@@ -445,7 +445,7 @@ def seed_assets(roots: tuple[RootType, ...], enable_logging: bool = False) -> No
with create_session() as sess:
if tag_pool:
ensure_tags_exist(sess, tag_pool, tag_type="user")
result = _seed_from_paths_batch(sess, specs=specs, owner_id="")
result = _batch_insert_assets_from_paths(sess, specs=specs, owner_id="")
created += result["inserted_infos"]
sess.commit()