Add calendar frame mode data model (migration 7)
New columns, all ADD COLUMN with inert defaults -- no existing frame's behavior changes until mode is explicitly switched to "calendar": - users.calendar_ics_url: one personal iCal/CalDAV subscription per user, same shape as the existing per-user immich_url/immich_api_key. - user_frames.calendar_included: explicit per-(user,frame) opt-in, default off. Being linked to a frame does not by itself contribute your calendar to it -- each person's calendar is their own data to share, not something a frame's controller decides on their behalf. - frames.calendar_view/calendar_photo_inlay/calendar_browse_offset: per-frame display settings and NEXT/BACK navigation state. - frames.calendar_checked_at/calendar_cached_events/calendar_fetch_summary: the throttled merge-fetch cache, same shape as the existing firmware_update_checked_at/firmware_gitea_latest_version pattern.
This commit is contained in:
@@ -80,6 +80,26 @@ def _migration_6(conn) -> None:
|
||||
conn.execute(text("ALTER TABLE frames ADD COLUMN dither_strength REAL NOT NULL DEFAULT 1.0"))
|
||||
|
||||
|
||||
def _migration_7(conn) -> None:
|
||||
"""Calendar frame mode: a personal ICS subscription per user
|
||||
(users.calendar_ics_url), an explicit per-(user,frame) opt-in into a
|
||||
frame's merged calendar (user_frames.calendar_included, default off
|
||||
-- linking to a frame does not auto-include your calendar there),
|
||||
and the frame-level view/inlay/browse-offset/cache settings calendar
|
||||
mode needs (see calendar_feed.py, calendar_render.py,
|
||||
routers/device.py's RENDERERS["calendar"]). Every new column has a
|
||||
behavior-preserving default -- no existing frame's behavior changes
|
||||
until its mode is actually switched to "calendar"."""
|
||||
conn.execute(text("ALTER TABLE users ADD COLUMN calendar_ics_url TEXT NOT NULL DEFAULT ''"))
|
||||
conn.execute(text("ALTER TABLE user_frames ADD COLUMN calendar_included INTEGER NOT NULL DEFAULT 0"))
|
||||
conn.execute(text("ALTER TABLE frames ADD COLUMN calendar_view TEXT NOT NULL DEFAULT 'agenda'"))
|
||||
conn.execute(text("ALTER TABLE frames ADD COLUMN calendar_photo_inlay INTEGER NOT NULL DEFAULT 0"))
|
||||
conn.execute(text("ALTER TABLE frames ADD COLUMN calendar_browse_offset INTEGER NOT NULL DEFAULT 0"))
|
||||
conn.execute(text("ALTER TABLE frames ADD COLUMN calendar_checked_at REAL NOT NULL DEFAULT 0.0"))
|
||||
conn.execute(text("ALTER TABLE frames ADD COLUMN calendar_cached_events TEXT"))
|
||||
conn.execute(text("ALTER TABLE frames ADD COLUMN calendar_fetch_summary TEXT NOT NULL DEFAULT ''"))
|
||||
|
||||
|
||||
MIGRATIONS = [
|
||||
(1, _migration_1),
|
||||
(2, _migration_2),
|
||||
@@ -87,6 +107,7 @@ MIGRATIONS = [
|
||||
(4, _migration_4),
|
||||
(5, _migration_5),
|
||||
(6, _migration_6),
|
||||
(7, _migration_7),
|
||||
]
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user