Files
ai-novel/build/static/js/main.907ae9a2.js

3 lines
1.2 MiB
JavaScript
Raw Permalink Normal View History

2026-04-16 21:32:21 +08:00
/*! For license information please see main.907ae9a2.js.LICENSE.txt */
(()=>{var e={235(e,t,n){"use strict";n.d(t,{indexedDBStorage:()=>a,storage:()=>i});var o=n(379);const r="AINovelDB";const a=new class{constructor(){this.db=null}async init(){return new Promise((e,t)=>{const n=indexedDB.open(r,2);n.onerror=()=>{t(new Error("Failed to open IndexedDB"))},n.onsuccess=()=>{this.db=n.result,e()},n.onupgradeneeded=e=>{const t=e.target.result;if(!t.objectStoreNames.contains("novels")){t.createObjectStore("novels",{keyPath:"id"}).createIndex("createdAt","createdAt",{unique:!1})}if(!t.objectStoreNames.contains("chapters")){const e=t.createObjectStore("chapters",{keyPath:"id"});e.createIndex("novelId","novelId",{unique:!1}),e.createIndex("chapterNumber","chapterNumber",{unique:!1})}t.objectStoreNames.contains("config")||t.createObjectStore("config",{keyPath:"id"})}})}async getStore(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"readonly";if(this.db||await this.init(),!this.db)throw new Error("Database initialization failed");if(!this.db.objectStoreNames.contains(e)&&(console.error("Object store '".concat(e,"' not found in database")),await this.reinit(),!this.db||!this.db.objectStoreNames.contains(e)))throw new Error("Object store '".concat(e,"' not found after reinitialization"));return this.db.transaction(e,t).objectStore(e)}async reinit(){return this.db&&(this.db.close(),this.db=null),new Promise((e,t)=>{const n=indexedDB.deleteDatabase(r);n.onsuccess=()=>{console.log("Old database deleted successfully"),this.init().then(e).catch(t)},n.onerror=()=>{console.error("Failed to delete old database"),t(new Error("Failed to delete old database"))}})}async getNovels(){const e=await this.getStore("novels");return new Promise((t,n)=>{const o=e.getAll();o.onsuccess=()=>t(o.result||[]),o.onerror=()=>n(o.error)})}async addNovel(e){const t=await this.getStore("novels","readwrite");return new Promise((n,o)=>{const r=t.add(e);r.onsuccess=()=>n(),r.onerror=()=>o(r.error)})}async updateNovel(e,t){const n=await this.getNovels(),r=n.findIndex(t=>t.id===e);if(-1!==r){const e=(0,o.A)((0,o.A)((0,o.A)({},n[r]),t),{},{updatedAt:(new Date).toISOString()}),a=await this.getStore("novels","readwrite");return new Promise((t,n)=>{const o=a.put(e);o.onsuccess=()=>t(),o.onerror=()=>n(o.error)})}}async deleteNovel(e){const t=await this.getStore("novels","readwrite");return new Promise((n,o)=>{const r=t.delete(e);r.onsuccess=()=>n(),r.onerror=()=>o(r.error)})}async getChapters(e){const t=await this.getStore("chapters");return new Promise((n,o)=>{const r=t.getAll();r.onsuccess=()=>{const t=r.result||[];n(t.filter(t=>t.novelId===e))},r.onerror=()=>o(r.error)})}async getAllChapters(){const e=await this.getStore("chapters");return new Promise((t,n)=>{const o=e.getAll();o.onsuccess=()=>t(o.result||[]),o.onerror=()=>n(o.error)})}async addChapter(e){const t=await this.getStore("chapters","readwrite");return new Promise((n,o)=>{const r=t.add(e);r.onsuccess=()=>n(),r.onerror=()=>o(r.error)})}async updateChapter(e,t){const n=await this.getAllChapters(),r=n.findIndex(t=>t.id===e);if(-1!==r){const e=(0,o.A)((0,o.A)((0,o.A)({},n[r]),t),{},{updatedAt:(new Date).toISOString()}),a=await this.getStore("chapters","readwrite");return new Promise((t,n)=>{const o=a.put(e);o.onsuccess=()=>t(),o.onerror=()=>n(o.error)})}}async deleteChapter(e){const t=await this.getStore("chapters","readwrite");return new Promise((n,o)=>{const r=t.delete(e);r.onsuccess=()=>n(),r.onerror=()=>o(r.error)})}async getSystemConfig(){const e=await this.getStore("config");return new Promise(t=>{const n=e.get("system");n.onsuccess=()=>{const e=n.result;e?(delete e.id,t(e)):t({ollamaUrl:"http://localhost:11434",model:"",temperature:.7,topP:.9,maxTokens:2e3})},n.onerror=()=>{t({ollamaUrl:"http://localhost:11434",model:"",temperature:.7,topP:.9,maxTokens:2e3})}})}async saveSystemConfig(e){const t=await this.getStore("config","readwrite"),n=(0,o.A)({id:"system"},e);return new Promise((e,o)=>{const r=t.put(n);r.onsuccess=()=>e(),r.onerror=()=>o(r.error)})}},i={getNovels:()=>a.getNovels(),addNovel:e=>a.addNovel(e),updateNovel:(e,t)=>a.updateNovel(e,t),deleteNovel:e
//# sourceMappingURL=main.907ae9a2.js.map