fix: make photo retention and exclusion mutually exclusive
This commit is contained in:
@@ -17,7 +17,11 @@ from starlette.exceptions import HTTPException
|
||||
from pigway_frame_flow.api.history import install_history
|
||||
from pigway_frame_flow.core.accounts import install_accounts, seed_accounts
|
||||
from pigway_frame_flow.core.auth import require, seed_client
|
||||
from pigway_frame_flow.core.photo_preferences import annotate, set_flags
|
||||
from pigway_frame_flow.core.photo_preferences import (
|
||||
annotate,
|
||||
ensure_compatible,
|
||||
set_flags,
|
||||
)
|
||||
from pigway_frame_flow.core.registry import DeviceRegistry
|
||||
from pigway_frame_flow.display.service import DisplayService
|
||||
from pigway_frame_flow.errors import ErrorCode as E
|
||||
@@ -645,15 +649,17 @@ def create_app(settings=None, start_worker=True):
|
||||
)
|
||||
def star_asset(asset_id: str, payload: ImageStar):
|
||||
with service.lock:
|
||||
assets.info(asset_id)
|
||||
db.execute(
|
||||
"INSERT INTO asset_metadata(asset_id,starred) VALUES(?,?) ON CONFLICT(asset_id) DO UPDATE SET starred=excluded.starred",
|
||||
(asset_id, int(payload.starred)),
|
||||
)
|
||||
db.execute(
|
||||
"UPDATE image_retention SET starred=? WHERE (device_id,image_id) IN (SELECT device_id,image_id FROM image_sources WHERE asset_id=?)",
|
||||
(int(payload.starred), asset_id),
|
||||
)
|
||||
with db.transaction() as connection:
|
||||
current = assets.info(asset_id)
|
||||
ensure_compatible(payload.starred, current["excluded"])
|
||||
connection.execute(
|
||||
"INSERT INTO asset_metadata(asset_id,starred) VALUES(?,?) ON CONFLICT(asset_id) DO UPDATE SET starred=excluded.starred",
|
||||
(asset_id, int(payload.starred)),
|
||||
)
|
||||
connection.execute(
|
||||
"UPDATE image_retention SET starred=? WHERE (device_id,image_id) IN (SELECT device_id,image_id FROM image_sources WHERE asset_id=?)",
|
||||
(int(payload.starred), asset_id),
|
||||
)
|
||||
return assets.info(asset_id)
|
||||
|
||||
@app.put(
|
||||
|
||||
Reference in New Issue
Block a user