Files
discord.js-storage/src/storageclass.ts
2022-05-26 20:57:59 -05:00

57 lines
1.1 KiB
TypeScript

import { defaultJson, JSONObject } from './util'
import { Guild } from 'discord.js'
export interface StorageValue {
get(): string
set(val: string): void
}
export class StorageBase {
val: StorageValue
constructor(val: StorageValue) {
this.val = val
}
set(val: string | JSONObject) {
if (typeof val !== 'string') {
val = JSON.stringify(val)
}
this.val.set(val)
}
get(): string {
return this.val.get()
}
getJson<T = JSONObject>(defaultValue?: T): T {
try {
let val = JSON.parse(this.val.get())
if (defaultValue) {
val = defaultJson(val, defaultValue)
}
return val;
} catch (e) {
if (defaultValue) {
return defaultValue
}
return {} as T
}
}
}
export class GlobalStorage extends StorageBase {}
export class GuildStorage extends StorageBase {
public guild: Guild
constructor(guild: Guild, val: StorageValue) {
super(val)
this.guild = guild
}
}