2023-09-20 10:25:41 +08:00

58 lines
1.5 KiB
TypeScript
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.

import { LocalDb } from '@/core';
import { app } from 'electron';
const dbInstance = new LocalDb(app.getPath('userData'));
dbInstance.init();
export default class DBInstance {
public currentPlugin: null | any = null;
private DBKEY = 'RUBICK_DB_DEFAULT';
private DB_INFO_KET = 'RUBICK_PLUGIN_INFO';
public async dbPut({ data }) {
// 记录插件有哪些 dbkey用于后续的数据同步
if (this.currentPlugin && this.currentPlugin.name) {
let dbInfo: any = await dbInstance.get(this.DBKEY, this.DB_INFO_KET);
if (!dbInfo) {
dbInfo = { data: [], _id: this.DB_INFO_KET };
}
const item = dbInfo.data.find(
(it) => it.name === this.currentPlugin.name
);
if (item) {
!item.keys.includes(data.data._id) && item.keys.push(data.data._id);
} else {
dbInfo.data.push({
name: this.currentPlugin.name,
keys: [data.data._id],
});
}
dbInstance.put(this.DBKEY, dbInfo);
}
return dbInstance.put(this.DBKEY, data.data);
}
public dbGet({ data }) {
return dbInstance.get(this.DBKEY, data.id);
}
public dbRemove({ data }) {
return dbInstance.remove(this.DBKEY, data.doc);
}
public dbBulkDocs({ data }) {
return dbInstance.bulkDocs(this.DBKEY, data.docs);
}
public dbAllDocs({ data }) {
return dbInstance.allDocs(this.DBKEY, data.key);
}
public dbDump({ data }) {
return dbInstance.dumpDb(data.target);
}
public dbImport({ data }) {
return dbInstance.importDb(data.target);
}
}