Files
PicList/src/main/manage/datastore/db.ts
萌萌哒赫萝 efeadb8fb8 Feature: add remote file delete , picBed management
First version of PicList.
In album, you can delete remote file now.
Add picBed management
function.
2023-02-15 23:36:47 +08:00

67 lines
1.5 KiB
TypeScript

/* eslint-disable */
import { JSONStore } from '@picgo/store'
import { IJSON } from '@picgo/store/dist/types'
import { ManageApiType, ManageConfigType } from '~/universal/types/manage'
class ManageDB {
private readonly ctx: ManageApiType
private readonly db: JSONStore
constructor (ctx: ManageApiType) {
this.ctx = ctx
this.db = new JSONStore(this.ctx.configPath)
let initParams: IStringKeyMap = {
picBed: {},
settings: {},
currentPicBed: 'placeholder'
}
for (let key in initParams) {
if (!this.db.has(key)) {
try {
this.db.set(key, initParams[key])
} catch (e: any) {
this.ctx.logger.error(e)
throw e
}
}
}
}
read (flush?: boolean): IJSON {
return this.db.read(flush)
}
get (key: string = ''): any {
this.read(true)
return this.db.get(key)
}
set (key: string, value: any): void {
this.read(true)
return this.db.set(key, value)
}
has (key: string): boolean {
this.read(true)
return this.db.has(key)
}
unset (key: string, value: any): boolean {
this.read(true)
return this.db.unset(key, value)
}
saveConfig (config: Partial<ManageConfigType>): void {
Object.keys(config).forEach((name: string) => {
this.set(name, config[name])
})
}
removeConfig (config: ManageConfigType): void {
Object.keys(config).forEach((name: string) => {
this.unset(name, config[name])
})
}
}
export default ManageDB