feat: unify source libraries, generation plans and terminal bindings
Community checks / verify (push) Skipped
Verify Frame Flow / verify (push) Failing after 6m24s

This commit is contained in:
渡口浪人
2026-10-23 17:45:30 +08:00
parent 081d8b6ee0
commit 6277c9d563
25 changed files with 5731 additions and 45 deletions
+15 -2
View File
@@ -144,6 +144,9 @@ def create_app(settings=None, start_worker=True):
from pigway_frame_flow.api.thumbnails import install_thumbnails
install_thumbnails(app, service)
from pigway_frame_flow.api.libraries import install_libraries
install_libraries(app, service)
app.state.service = service
app.state.worker_enabled = start_worker
app.state.scheduler = scheduler
@@ -601,7 +604,7 @@ def create_app(settings=None, start_worker=True):
return [
assets.info(r["id"])
for r in db.all(
"SELECT assets.id FROM assets LEFT JOIN asset_metadata ON asset_metadata.asset_id=assets.id WHERE kind!='cache' "
"SELECT assets.id FROM assets LEFT JOIN asset_metadata ON asset_metadata.asset_id=assets.id WHERE kind NOT IN ('cache','source-images','renditions') "
"AND NOT EXISTS (SELECT 1 FROM asset_sources s WHERE s.asset_id=assets.id AND json_extract(s.payload,'$.type')='thumbnail') AND "
"(?='all' OR (?='uploaded' AND kind='images') OR (?='generated' AND kind='generated')) "
"AND (?='all' OR COALESCE(origin,'unknown')=?) AND (? IS NULL OR job_id=?) "
@@ -618,6 +621,13 @@ def create_app(settings=None, start_worker=True):
)
def delete_asset(asset_id: str):
path = assets.path(asset_id)
if db.one(
"SELECT id FROM assets WHERE id=? AND kind IN ('source-images','renditions')",
(asset_id,),
):
raise FlowError(
E.CONFLICT, "Delete library images through their source library", 409
)
reference = "%" + asset_id + "%"
if (
db.one(
@@ -799,7 +809,9 @@ def create_app(settings=None, start_worker=True):
dependencies=[Depends(require("admin"))],
)
def delete_photo_source(source_id: str):
service.photo_sources.delete(source_id)
with service.lock:
service.libraries.check_source_delete(source_id)
service.photo_sources.delete(source_id)
return Response(status_code=204)
@app.get(
@@ -1391,6 +1403,7 @@ def create_app(settings=None, start_worker=True):
if filename not in [
"app.js",
"thumbnails.js",
"libraries.js",
"features.js",
"extensions.js",
"style.css",