import { sqliteTable, text, integer } from 'drizzle-orm/sqlite-core'; import { sql } from 'drizzle-orm'; import { formatProfiles } from './content'; /** Monitored channels (YouTube channels, SoundCloud artists, etc.). */ export const channels = sqliteTable('channels', { id: integer('id').primaryKey({ autoIncrement: true }), name: text('name').notNull(), platform: text('platform').notNull(), // 'youtube' | 'soundcloud' platformId: text('platform_id').notNull(), url: text('url').notNull(), monitoringEnabled: integer('monitoring_enabled', { mode: 'boolean' }) .notNull() .default(true), checkInterval: integer('check_interval').notNull().default(360), // minutes imageUrl: text('image_url'), metadata: text('metadata', { mode: 'json' }), // platform-specific extras formatProfileId: integer('format_profile_id').references( () => formatProfiles.id, { onDelete: 'set null' } ), createdAt: text('created_at') .notNull() .default(sql`(datetime('now'))`), updatedAt: text('updated_at') .notNull() .default(sql`(datetime('now'))`), lastCheckedAt: text('last_checked_at'), // null until first monitoring check lastCheckStatus: text('last_check_status'), // 'success' | 'error' | 'rate_limited' monitoringMode: text('monitoring_mode').notNull().default('all'), // 'all' | 'future' | 'existing' | 'none' });