diff --git a/libs/shared/database/src/lib/epg-mapping.schema.ts b/libs/shared/database/src/lib/epg-mapping.schema.ts new file mode 100644 index 000000000..edb0c9538 --- /dev/null +++ b/libs/shared/database/src/lib/epg-mapping.schema.ts @@ -0,0 +1,30 @@ +/** + * Drizzle ORM schema for manual EPG-to-channel mappings. + * + * Split out of schema.ts to keep that file within the repository's + * max-lines budget; re-exported from there so `import * as schema` + * consumers keep seeing a single schema namespace. + */ + +import { sql } from 'drizzle-orm'; +import { index, integer, sqliteTable, text } from 'drizzle-orm/sqlite-core'; + +// EPG channel mappings (manual user overrides) +export const epgChannelMappings = sqliteTable( + 'epg_channel_mappings', + { + id: integer('id').primaryKey({ autoIncrement: true }), + channelKey: text('channel_key').notNull().unique(), + epgChannelId: text('epg_channel_id').notNull(), + playlistId: text('playlist_id'), + updatedAt: text('updated_at').default(sql`CURRENT_TIMESTAMP`), + }, + (table) => ({ + playlistIdx: index('idx_epg_channel_mappings_playlist').on( + table.playlistId + ), + }) +); + +export type EpgChannelMapping = typeof epgChannelMappings.$inferSelect; +export type NewEpgChannelMapping = typeof epgChannelMappings.$inferInsert; diff --git a/libs/shared/database/src/lib/schema.ts b/libs/shared/database/src/lib/schema.ts index 1c00709ba..fe12dce54 100644 --- a/libs/shared/database/src/lib/schema.ts +++ b/libs/shared/database/src/lib/schema.ts @@ -16,6 +16,10 @@ import { uniqueIndex, } from 'drizzle-orm/sqlite-core'; +// Manual EPG-to-channel mappings live in their own schema module; re-export +// them so `import * as schema from './schema'` keeps a complete namespace. +export * from './epg-mapping.schema'; + // Playlists table export const playlists = sqliteTable('playlists', { id: text('id').primaryKey(), @@ -350,26 +354,6 @@ export const downloads = sqliteTable( }) ); -// EPG channel mappings (manual user overrides) -export const epgChannelMappings = sqliteTable( - 'epg_channel_mappings', - { - id: integer('id').primaryKey({ autoIncrement: true }), - channelKey: text('channel_key').notNull().unique(), - epgChannelId: text('epg_channel_id').notNull(), - playlistId: text('playlist_id'), - updatedAt: text('updated_at').default(sql`CURRENT_TIMESTAMP`), - }, - (table) => ({ - playlistIdx: index('idx_epg_channel_mappings_playlist').on( - table.playlistId - ), - }) -); - -export type EpgChannelMapping = typeof epgChannelMappings.$inferSelect; -export type NewEpgChannelMapping = typeof epgChannelMappings.$inferInsert; - export type Download = typeof downloads.$inferSelect; export type NewDownload = typeof downloads.$inferInsert;