diff --git a/app/assets/api/upload.py b/app/assets/api/upload.py index 74b045aaf..f1003eb2c 100644 --- a/app/assets/api/upload.py +++ b/app/assets/api/upload.py @@ -1,9 +1,3 @@ -""" -Multipart upload parsing for asset uploads. - -This module handles the HTTP-specific concerns of parsing multipart form data, -streaming file uploads to temp storage, and validating hash fields. -""" import os import uuid diff --git a/app/assets/database/queries/__init__.py b/app/assets/database/queries/__init__.py index db983d276..0e2af7b25 100644 --- a/app/assets/database/queries/__init__.py +++ b/app/assets/database/queries/__init__.py @@ -1,6 +1,3 @@ -# Re-export public API from query modules -# Pure atomic database queries only - no business logic or orchestration - from app.assets.database.queries.asset import ( asset_exists_by_hash, bulk_insert_assets, diff --git a/app/assets/database/queries/asset.py b/app/assets/database/queries/asset.py index adeee8d95..174b30837 100644 --- a/app/assets/database/queries/asset.py +++ b/app/assets/database/queries/asset.py @@ -1,4 +1,3 @@ - import sqlalchemy as sa from sqlalchemy import select from sqlalchemy.dialects import sqlite diff --git a/app/assets/database/queries/asset_info.py b/app/assets/database/queries/asset_info.py index 38724b6d1..fce2a71ef 100644 --- a/app/assets/database/queries/asset_info.py +++ b/app/assets/database/queries/asset_info.py @@ -1,9 +1,3 @@ -""" -Pure atomic database queries for AssetInfo operations. - -This module contains only atomic DB operations - no business logic, -no filesystem operations, no orchestration across multiple tables. -""" from collections import defaultdict from datetime import datetime from decimal import Decimal diff --git a/app/assets/manager.py b/app/assets/manager.py index 797e82274..ccba96fab 100644 --- a/app/assets/manager.py +++ b/app/assets/manager.py @@ -1,12 +1,3 @@ -""" -Asset manager - thin API adapter layer. - -This module transforms API schemas to/from service layer calls. -It should NOT contain business logic or direct SQLAlchemy usage. - -Architecture: - API Routes -> manager.py (schema transformation) -> services/ (business logic) -> queries/ (DB ops) -""" import contextlib import mimetypes import os diff --git a/app/assets/services/__init__.py b/app/assets/services/__init__.py index 7d4e94a80..23595532e 100644 --- a/app/assets/services/__init__.py +++ b/app/assets/services/__init__.py @@ -1,7 +1,3 @@ -# Asset services layer -# Business logic that orchestrates database queries and filesystem operations -# Services own session lifecycle via create_session() - from app.assets.services.asset_management import ( delete_asset_reference, get_asset_detail, diff --git a/app/assets/services/asset_management.py b/app/assets/services/asset_management.py index e18fea73e..90c157472 100644 --- a/app/assets/services/asset_management.py +++ b/app/assets/services/asset_management.py @@ -1,12 +1,3 @@ -""" -Asset management services - CRUD operations on assets. - -Business logic for: -- get_asset_detail: Fetch full asset details with tags -- update_asset_metadata: Update name, tags, and/or metadata -- delete_asset_reference: Delete AssetInfo and optionally orphaned content -- set_asset_preview: Set or clear preview on an asset -""" import contextlib import os from typing import Sequence diff --git a/app/assets/services/ingest.py b/app/assets/services/ingest.py index bc03d9906..ce9a5c1b1 100644 --- a/app/assets/services/ingest.py +++ b/app/assets/services/ingest.py @@ -1,10 +1,3 @@ -""" -Ingest services - handles ingesting files into the asset database. - -Business logic for: -- ingest_file_from_path: Ingest a file from filesystem path (upsert asset, cache state, info) -- register_existing_asset: Create AssetInfo for an asset that already exists by hash -""" import logging import os from typing import Sequence diff --git a/app/assets/services/schemas.py b/app/assets/services/schemas.py index c720ce6bc..a0fd02553 100644 --- a/app/assets/services/schemas.py +++ b/app/assets/services/schemas.py @@ -1,9 +1,3 @@ -""" -Service layer data transfer objects. - -These dataclasses represent the data returned by service functions, -providing explicit types instead of raw dicts or ORM objects. -""" from dataclasses import dataclass from datetime import datetime diff --git a/app/assets/services/tagging.py b/app/assets/services/tagging.py index f6247dfa8..b9f5a8c69 100644 --- a/app/assets/services/tagging.py +++ b/app/assets/services/tagging.py @@ -1,11 +1,3 @@ -""" -Tagging services - manage tags on assets. - -Business logic for: -- apply_tags: Add tags to an asset -- remove_tags: Remove tags from an asset -- list_tags: List tags with usage counts -""" from app.assets.database.queries import ( add_tags_to_asset_info, get_asset_info_by_id,