const { TABLE_OPTIONS, column: c, index: i, uniqueIndex: u } = require('./helpers'); const table = (name, group, columns, primaryKey, indexes = []) => ({ name, group, wrapped: false, columns, primaryKey, indexes, foreignKeys: [], options: TABLE_OPTIONS }); const coreTables = [ table('access_keys', 'core', [c('id','BIGINT UNSIGNED NOT NULL AUTO_INCREMENT','bigint unsigned',false,null,'auto_increment'),c('key_value','VARCHAR(255) NOT NULL','varchar(255)',false),c('active','TINYINT(1) NOT NULL DEFAULT 1','tinyint(1)',false,'1'),c('used','TINYINT(1) NOT NULL DEFAULT 0','tinyint(1)',false,'0'),c('duree_validite','VARCHAR(64) DEFAULT NULL','varchar(64)',true),c('expires_at','BIGINT DEFAULT NULL','bigint',true),c('created_at','TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP','timestamp',false,'CURRENT_TIMESTAMP'),c('updated_at','TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP','timestamp',false,'CURRENT_TIMESTAMP','on update CURRENT_TIMESTAMP')],['id'],[u('uq_access_keys_key_value',['key_value']),i('idx_access_keys_active_used',['active','used']),i('idx_access_keys_expires_at',['expires_at'])]), table('user_sessions','core',[c('id','VARCHAR(255) NOT NULL','varchar(255)',false),c('user_id','VARCHAR(255) NOT NULL','varchar(255)',false),c('user_type',"ENUM('oauth', 'bip39') NOT NULL",'enum',false),c('device','TEXT','text',true),c('user_agent','TEXT DEFAULT NULL','text',true),c('created_at','TIMESTAMP DEFAULT CURRENT_TIMESTAMP','timestamp',true,'CURRENT_TIMESTAMP'),c('accessed_at','TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP','timestamp',true,'CURRENT_TIMESTAMP','on update CURRENT_TIMESTAMP')],['id'],[i('idx_user_sessions_user',['user_id','user_type']),i('idx_user_sessions_accessed',['accessed_at'])]), table('films','media',[c('id','INT NOT NULL','int',false),c('links','JSON DEFAULT NULL','json',true),c('download_links','JSON DEFAULT NULL','json',true),c('created_at','TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP','timestamp',false,'CURRENT_TIMESTAMP'),c('updated_at','TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP','timestamp',false,'CURRENT_TIMESTAMP','on update CURRENT_TIMESTAMP')],['id']), table('series','media',[c('id','BIGINT UNSIGNED NOT NULL AUTO_INCREMENT','bigint unsigned',false,null,'auto_increment'),c('series_id','INT NOT NULL','int',false),c('season_number','INT NOT NULL','int',false),c('episode_number','INT NOT NULL','int',false),c('links','JSON DEFAULT NULL','json',true),c('download_links','JSON DEFAULT NULL','json',true),c('created_at','TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP','timestamp',false,'CURRENT_TIMESTAMP'),c('updated_at','TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP','timestamp',false,'CURRENT_TIMESTAMP','on update CURRENT_TIMESTAMP')],['id'],[u('uq_series_episode',['series_id','season_number','episode_number']),i('idx_series_lookup',['series_id','season_number','episode_number'])]), table('account_links','core',[c('provider',"ENUM('discord', 'google', 'bip39') NOT NULL",'enum',false),c('provider_user_id','VARCHAR(255) NOT NULL','varchar(255)',false),c('target_user_type',"ENUM('oauth', 'bip39') NOT NULL",'enum',false),c('target_user_id','VARCHAR(255) NOT NULL','varchar(255)',false),c('linked_at','TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP','timestamp',false,'CURRENT_TIMESTAMP'),c('updated_at','TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP','timestamp',false,'CURRENT_TIMESTAMP','on update CURRENT_TIMESTAMP')],['provider','provider_user_id'],[u('uniq_account_links_target_provider',['target_user_type','target_user_id','provider']),i('idx_account_links_target',['target_user_type','target_user_id'])]), table('clone_links','media',[c('id','BIGINT UNSIGNED NOT NULL AUTO_INCREMENT','bigint unsigned',false,null,'auto_increment'),c('provider',"ENUM('uqload') NOT NULL",'enum',false),c('media_type',"ENUM('movie', 'tv') NOT NULL",'enum',false),c('tmdb_id','INT NOT NULL','int',false),c('season_number','INT NOT NULL DEFAULT 0','int',false,'0'),c('episode_number','INT NOT NULL DEFAULT 0','int',false,'0'),c('source_file_code','VARCHAR(64) NOT NULL','varchar(64)',false),c('clone_file_code','VARCHAR(64) DEFAULT NULL','varchar(64)',true),c('clone_embed_url','VARCHAR(2048) DEFAULT NULL','varchar(2048)',true),c('status',"ENUM('pending', 'ready', 'failed') NOT NULL DEFAULT 'pending'",'enum',false,'pending'),c('last_error','TEXT DEFAULT NULL','text',true),c('last_checked_at','DATETIME DEFAULT NULL','datetime',true),c('created_at','DATETIME DEFAULT CURRENT_TIMESTAMP','datetime',true,'CURRENT_TIMESTAMP'),c('updated_at','DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP','datetime',true,'CURRENT_TIMESTAMP','on update CURRENT_TIMESTAMP')],['id'],[u('uniq_clone_scope',['provider','media_type','tmdb_id','season_number','episode_number','source_file_code']),i('idx_clone_lookup',['media_type','tmdb_id','season_number','episode_number']),i('idx_clone_status',['status'])]), table('download_links_history','core',[c('id','BIGINT NOT NULL AUTO_INCREMENT','bigint',false,null,'auto_increment'),c('admin_id','VARCHAR(255) NOT NULL','varchar(255)',false),c('admin_auth_type',"ENUM('oauth','bip-39') NOT NULL",'enum',false),c('action',"ENUM('added','removed') NOT NULL",'enum',false),c('media_type',"ENUM('movie','tv') NOT NULL",'enum',false),c('tmdb_id','BIGINT NOT NULL','bigint',false),c('season','INT DEFAULT NULL','int',true),c('episode','INT DEFAULT NULL','int',true),c('link_url','TEXT NOT NULL','text',false),c('link_type',"ENUM('streaming','download') NOT NULL DEFAULT 'download'",'enum',false,'download'),c('changed_at','TIMESTAMP DEFAULT CURRENT_TIMESTAMP','timestamp',true,'CURRENT_TIMESTAMP')],['id'],[i('idx_dlh_admin',['admin_id','admin_auth_type']),i('idx_dlh_changed',['changed_at']),i('idx_dlh_action',['action']),i('idx_dlh_link_type',['link_type'])]), table('help_feedback','core',[c('id','INT UNSIGNED NOT NULL AUTO_INCREMENT','int unsigned',false,null,'auto_increment'),c('slug','VARCHAR(64) NOT NULL','varchar(64)',false),c('helpful','TINYINT(1) NOT NULL','tinyint(1)',false),c('ip_hash','CHAR(64) NOT NULL','char(64)',false),c('user_agent','VARCHAR(255) DEFAULT NULL','varchar(255)',true),c('created_at','TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP','timestamp',false,'CURRENT_TIMESTAMP'),c('updated_at','TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP','timestamp',false,'CURRENT_TIMESTAMP','on update CURRENT_TIMESTAMP')],['id'],[u('uniq_slug_ip',['slug','ip_hash']),i('idx_slug',['slug'])]), ]; module.exports = { coreTables };