import type { Generated, Insertable, Selectable, Updateable, } from 'kysely' export interface Database { videos: VideosTable reports: ReportsTable files: FilesTable restore_requests: RestoreRequestsTable archive_requests: ArchiveRequestsTable auto_approve_senders: AutoApproveSendersTable } export interface VideosTable { uuid: Generated id: string title: string description: string thumbnail: string source: string published: string archived: string channel: string channelId: string channelVerified: boolean channelAvatar: string playlist?: string | null disabled: boolean hasBeenReported: boolean, deletion_stage: 'pending_delete' | 'soft_delete' | 'cold_storage' | 'deleted' | null } export type Video = Selectable export type NewVideo = Insertable export type UpdateVideo = Updateable export interface ReportsTable { uuid: Generated target: string[] title: string details: string date: Date pdf_url?: string | null hidden?: boolean } export type Report = Selectable export type NewReport = Insertable export type UpdateReport = Updateable export interface FilesTable { uuid: Generated videoId: string filename: string hash: string hash_algorithm: string size_bytes: number duration_seconds: number video_codec: string audio_codec: string resolution: string fps: number } export type File = Selectable export type NewFile = Insertable export interface RestoreRequestsTable { uuid: Generated videoId: string requester_email: string status: 'requested' | 'restoring' | 'restored' | 'reuploading' | 'reuploaded' | 'failed' aws_restore_requested_at: Date | null aws_restore_expiry: Date | null error_message: string | null created_at: Generated updated_at: Generated } export type RestoreRequest = Selectable export type NewRestoreRequest = Insertable export type UpdateRestoreRequest = Updateable export interface ArchiveRequestVideo { id: string title: string | null channel: string | null channelId: string | null lengthSeconds: number | null isArchived: boolean alive: boolean result?: { success: boolean, message: string } } export interface ArchiveRequestsTable { uuid: Generated message_id: string from_email: string from_name: string | null subject: string | null body: string | null videos: ArchiveRequestVideo[] ai_summary: string | null status: Generated<'pending' | 'awaiting_context' | 'approved' | 'archiving' | 'solved' | 'dismissed' | 'failed'> auto_approved: Generated context_message_id: string | null error_message: string | null reply_text: string | null created_at: Generated updated_at: Generated } export type ArchiveRequest = Selectable export type NewArchiveRequest = Insertable export type UpdateArchiveRequest = Updateable export interface AutoApproveSendersTable { email: string note: string | null created_at: Generated }