From 34098fd5699234009eab8c200a79e940e5e56e63 Mon Sep 17 00:00:00 2001 From: 4gray Date: Sun, 5 Apr 2026 18:44:10 +0200 Subject: [PATCH] feat: add EPG metadata fields to content schema and migration statements --- libs/shared/database/src/lib/connection.ts | 9 +++++++++ libs/shared/database/src/lib/schema.ts | 4 ++++ 2 files changed, 13 insertions(+) diff --git a/libs/shared/database/src/lib/connection.ts b/libs/shared/database/src/lib/connection.ts index 25c6dadf6..09a8e255d 100644 --- a/libs/shared/database/src/lib/connection.ts +++ b/libs/shared/database/src/lib/connection.ts @@ -79,6 +79,10 @@ const CREATE_TABLE_STATEMENTS = [ rating TEXT, added TEXT, poster_url TEXT, + epg_channel_id TEXT, + tv_archive INTEGER, + tv_archive_duration INTEGER, + direct_source TEXT, xtream_id INTEGER NOT NULL, type TEXT NOT NULL CHECK (type IN ('live', 'movie', 'series')), FOREIGN KEY (category_id) REFERENCES categories (id) ON DELETE CASCADE @@ -227,6 +231,11 @@ const COLUMN_MIGRATION_STATEMENTS = [ `ALTER TABLE playlists ADD COLUMN payload TEXT`, // v1.2.0 -> v1.3.0: Add position column to favorites for global favorites ordering `ALTER TABLE favorites ADD COLUMN position INTEGER DEFAULT 0`, + // v1.4.0 -> v1.5.0: Preserve Xtream live metadata required for EPG/catch-up + `ALTER TABLE content ADD COLUMN epg_channel_id TEXT`, + `ALTER TABLE content ADD COLUMN tv_archive INTEGER`, + `ALTER TABLE content ADD COLUMN tv_archive_duration INTEGER`, + `ALTER TABLE content ADD COLUMN direct_source TEXT`, ]; const INDEX_MIGRATION_STATEMENTS = [ diff --git a/libs/shared/database/src/lib/schema.ts b/libs/shared/database/src/lib/schema.ts index f2fd5dbb7..d033e9e8f 100644 --- a/libs/shared/database/src/lib/schema.ts +++ b/libs/shared/database/src/lib/schema.ts @@ -87,6 +87,10 @@ export const content = sqliteTable( rating: text('rating'), added: text('added'), posterUrl: text('poster_url'), + epgChannelId: text('epg_channel_id'), + tvArchive: integer('tv_archive'), + tvArchiveDuration: integer('tv_archive_duration'), + directSource: text('direct_source'), xtreamId: integer('xtream_id').notNull(), type: text('type', { enum: ['live', 'movie', 'series'] }).notNull(), },