import Dexie, { type Table } from 'dexie'; import type { key_val } from './ae_stores'; // li = list // kv = key value list // Updated 2024-09-25 export interface Archive { id: string; // id_random: string; archive_id: string; // archive_id_random: string; code?: null|string; account_id: string; // account_id_random: string; // archive_type: string; // type: string; name: string; // summary?: null|string; description?: null|string; content_html?: null|string; content_json?: null|string; content_url?: null|string; content_url_text?: null|string; original_datetime?: Date; original_timezone?: null|string; original_location?: null|string; original_url?: null|string; original_url_text?: null|string; // meta_data?: null|string; // access_key?: null|string; /// Rename this to "passcode" if used later sort_by?: null|string; sort_by_desc?: null|string; cfg_json?: null|key_val; enable: null|boolean; hide?: null|boolean; priority?: null|boolean sort?: null|number; group?: null|string; notes?: null|string; created_on: Date; updated_on?: null|Date; // Additional fields for convenience (database views) // archive_content_count?: number; // archive_content_kv?: null|key_val; // archive_content_li?: null|[]; } // Updated 2024-09-25 export interface Archive_Content { id: string; // id_random: string; archive_content_id: string; // archive_content_id_random: string; archive_id: string; // archive_id_random: string; archive_content_type: string; name: string; description?: null|string; content_html?: null|string; content_json?: null|string; url?: null|string; url_text?: null|string; hosted_file_id?: string; file_path?: null|string; filename?: null|string; file_extension?: null|string; original_datetime?: Date; original_timezone?: null|string; original_location?: null|string; original_url?: null|string; original_url_text?: null|string; // meta_data?: null|string; // access_key?: null|string; /// Rename this to "passcode" if used later enable_for_public?: boolean; cfg_json?: null|key_val; enable: null|boolean; hide?: null|boolean; priority?: null|boolean sort?: null|number; group?: null|string; notes?: null|string; created_on: Date; updated_on?: null|Date; // Additional fields for convenience (database views) archive_code?: null|string; archive_name?: null|string; } // Updated 2024-09-25 export class MySubClassedDexie extends Dexie { // We just tell the typing system this is the case archive!: Table; content!: Table; constructor() { super('ae_archives_db'); this.version(1).stores({ archive: ` id, archive_id, code, account_id, name, original_datetime, original_timezone, original_location, enable, hide, priority, sort, group, notes, created_on, updated_on`, content: ` id, archive_content_id, archive_id, archive_content_type, name, hosted_file_id, file_path, filename, file_extension, original_datetime, original_timezone, original_location, original_url, original_url_text, enable_for_public, enable, hide, priority, sort, group, notes, created_on, updated_on`, }); } } export const db_archives = new MySubClassedDexie();