Files
ks-app-employment-service/unpackage/dist/build/apptest/assets/BaseDBStore.DnB5hDlq.js
史典卓 0216f6053a flat:AI+
2025-03-28 15:19:42 +08:00

2 lines
7.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

var e=Object.defineProperty,t=(t,r,n)=>(((t,r,n)=>{r in t?e(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n})(t,"symbol"!=typeof r?r+"":r,n),n);import{C as r,q as n,ag as s,T as o,ah as a,ai as i,aj as c,ak as l,af as u,al as d}from"./index-BoIbtAZO.js";class h{constructor(e,t=1){this.dbName=e,this.version=t,this.db=null}openDB(e=[]){return new Promise(((t,r)=>{const n=indexedDB.open(this.dbName,this.version);n.onupgradeneeded=t=>{this.db=t.target.result,e.forEach((e=>{if(!this.db.objectStoreNames.contains(e.name)){const t=this.db.createObjectStore(e.name,{keyPath:e.keyPath,autoIncrement:e.autoIncrement||!1});e.indexes&&e.indexes.forEach((e=>{t.createIndex(e.name,e.key,{unique:e.unique})}))}}))},n.onsuccess=e=>{this.db=e.target.result,console.log("✅ IndexedDB 连接成功"),t(this.db)},n.onerror=e=>{r(`IndexedDB Error: ${e.target.error}`)}}))}async queryByField(e,t,r){return new Promise((async(n,s)=>{try{this.db||await this.openDB();const o=this.db.transaction(e,"readonly").objectStore(e);if(!o.indexNames.contains(t))return s(`索引 ${t} 不存在`);const a=o.index(t).getAll(r);a.onsuccess=e=>{n(e.target.result)},a.onerror=e=>{s("查询失败: "+e.target.error)}}catch(o){s("查询错误: "+o)}}))}add(e,t){return new Promise(((r,n)=>{const s=this.db.transaction([e],"readwrite"),o=s.objectStore(e),a=Array.isArray(t)?t:[t],i=[];a.forEach(((e,t)=>{const r=o.add(e);r.onsuccess=e=>{i[t]=e.target.result},r.onerror=e=>{s.abort(),n(`${t+1} 条数据添加失败: ${e.target.error}`)}})),s.oncomplete=()=>{r(1===a.length?i[0]:i)},s.onerror=e=>{n(`添加失败: ${e.target.error}`)}}))}get(e,t){return new Promise(((r,n)=>{const s=this.db.transaction([e],"readonly").objectStore(e).get(t);s.onsuccess=()=>r(s.result),s.onerror=e=>n(`Get Error: ${e.target.error}`)}))}getAll(e){return new Promise(((t,r)=>{const n=this.db.transaction([e],"readonly").objectStore(e);if("function"==typeof n.getAll){const e=n.getAll();e.onsuccess=()=>t(e.result),e.onerror=e=>r(`GetAll Error: ${e.target.error}`)}else{const e=[],s=n.openCursor();s.onsuccess=r=>{const n=r.target.result;n?(e.push(n.value),n.continue()):t(e)},s.onerror=e=>r(`Cursor Error: ${e.target.error}`)}}))}async getRecordCount(e){return new Promise(((t,r)=>{const n=this.db.transaction([e],"readonly").objectStore(e).count();n.onsuccess=()=>t(n.result),n.onerror=e=>r(`❌ Count Error: ${e.target.error}`)}))}update(e,t){return new Promise(((r,n)=>{const s=this.db.transaction([e],"readwrite").objectStore(e).put(t);s.onsuccess=()=>r("Data updated successfully"),s.onerror=e=>n(`Update Error: ${e.target.error}`)}))}delete(e,t){return new Promise(((r,n)=>{const s=this.db.transaction([e],"readwrite").objectStore(e).delete(t);s.onsuccess=()=>r("Data deleted successfully"),s.onerror=e=>n(`Delete Error: ${e.target.error}`)}))}getByIndex(e,t,r){return new Promise(((n,s)=>{const o=this.db.transaction([e],"readonly").objectStore(e).index(t).get(r);o.onsuccess=()=>n(o.result),o.onerror=e=>s(`Get By Index Error: ${e.target.error}`)}))}clearStore(e){return new Promise(((t,r)=>{const n=this.db.transaction([e],"readwrite").objectStore(e).clear();n.onsuccess=()=>t("Store cleared successfully"),n.onerror=e=>r(`Clear Store Error: ${e.target.error}`)}))}deleteDB(e=null){return new Promise(((t,r)=>{const n=indexedDB.deleteDatabase(e||this.dbName);n.onsuccess=()=>t("Database deleted successfully"),n.onerror=e=>r(`Delete DB Error: ${e.target.error}`)}))}async deleteOldestRecord(e){return new Promise(((t,r)=>{const n=this.db.transaction([e],"readwrite").objectStore(e),s=n.openCursor();s.onsuccess=function(e){const r=e.target.result;r?(console.log(`🗑️ 删除最早的记录 ID: ${r.key}`),n.delete(r.key),t()):t()},s.onerror=e=>r(`❌ Cursor Error: ${e.target.error}`)}))}}const g=r("messageGroup",(()=>{const e=n("messageGroup"),t=n("messages"),r=n([]),l=n(!1),u=n(""),d=n([]),h=n(""),g=n("");async function b(e){y.isDBReady||await y.initDB(),h.value=e;const n=await y.db.queryByField(t.value,"parentGroupId",e);n.length?(console.log("本地数据库存在该对话数据",n),r.value=n):(console.log("本地数据库不存在该对话数据"),p("refresh"))}function m(e){l.value=e}function f(){c.chatRequest("/getHistory").then((t=>{if(!t.data.list.length)return;let r=t.data.list.map((e=>({title:e.title,createTime:e.updateTime,sessionId:e.chatId})));if(r&&r.length){const t=r[0],[n,o]=s(r);h.value=t.sessionId,d.value=n,p(!1),y.db.add(e.value,r),g.value=o}}))}function p(e=!0){const n={sessionId:h.value};c.chatRequest("/detail",n,"GET",e).then((e=>{console.log("detail",e.data);let n=function(e,t){const r=[];for(let n=0;n<e.length;n++){const s=e[n],o="AI"!==s.obj;let a="",i=[];for(let e=0;e<s.value.length;e++){const t=s.value[e];"text"===t.type&&(a+=t.text.content),"file"===t.type&&i.push(t.file)}r.push({parentGroupId:t,displayText:a,self:o,text:a,dataId:s.dataId,files:i})}return r}(e.data.list,h.value);n.length&&(r.value=n,y.db.add(t.value,n)),console.log("解析后:",n)})).catch((()=>{o("请求出现异常,请联系工作人员")}))}return{messages:r,isTyping:l,textInput:u,chatSessionID:h,addMessage:async function(e){if(!h.value)return o("请创建对话");const n={...e,parentGroupId:h.value,files:e.files||[]};r.value.push(n),async function(e){console.log(e),await y.db.add(t.value,e)}(n)},tabeList:d,init:async function(){setTimeout((async()=>{y.isDBReady||await y.initDB();const t=await y.db.getAll(e.value);if(t.length){console.warn("本地数据库存在数据");const e=t.reverse(),[r,n]=s(e);d.value=r;const o=e[0];h.value=o.sessionId,b(o.sessionId)}else console.warn("本地数据库存在数据"),f()}),1e3)},initMessage:b,toggleTyping:m,addTabel:async function(t){y.isDBReady||await y.initDB();const r=a.generate();let n={title:t,createTime:i(Date.now()),sessionId:r};const o=await y.db.add(e.value,n),c=await y.db.getAll(e.value);h.value=r;const[l,u]=s(c);return d.value=l,o},addNewDialogue:function(){h.value="",r.value=[]},changeDialogue:function(e){h.value=e.sessionId,b(e.sessionId)},getStearm:async function(e,n=[],s){return new Promise(((a,i)=>{try{let l=function(){f.text=v,f.parentGroupId=h.value,y.db.add(t.value,f)},u=function(e){v+=e,f.displayText+=e,r.value[p]={...f},s&&s()},d=function(e){console.error("请求异常:",e),o("服务响应异常"),i(e)},g=function(){f.text=v,r.value[p]={...f},m(!1),window.removeEventListener("unload",l),l(),a&&a()};m(!0);const b={data:e,sessionId:h.value};n&&n.length&&(b.fileUrl=n.map((e=>e.url)));const f={text:"",self:!1,displayText:""},p=r.value.length;r.value.push(f);let v="";window.addEventListener("unload",l),c.streamRequest("/chat",b,u,d,g)}catch(l){console.log(l),i(l)}}))},getHistory:f}}));const y=new class{constructor(){t(this,"db",null),t(this,"isDBReady",!1),t(this,"dbName","BrowsingHistory"),this.checkAndInitDB()}checkAndInitDB(){const e=l("indexedDBVersion")||1;console.log("DBVersion: ",e,u.DBversion),e===u.DBversion?this.initDB():(console.log("清空本地数据库"),this.clearDB().then((()=>{d("indexedDBVersion",u.DBversion),this.initDB()})))}initDB(){this.db=new h(this.dbName,u.DBversion),this.db.openDB([{name:"record",keyPath:"id",autoIncrement:!0},{name:"messageGroup",keyPath:"id",autoIncrement:!0},{name:"messages",keyPath:"id",autoIncrement:!0,indexes:[{name:"parentGroupId",key:"parentGroupId",unique:!1}]}]).then((async()=>{g().init(),this.isDBReady=!0}))}async clearDB(){return new Promise(((e,t)=>{(new h).deleteDB(this.dbName).then((()=>{e()}))}))}};export{y as b,g as u};