This repository has been archived on 2024-10-29. You can view files and clone it, but cannot push or open issues or pull requests.
Files
scoresaber-reloadedv3/src/app/common/database/database.ts

52 lines
1.1 KiB
TypeScript
Raw Normal View History

2024-09-08 22:35:32 +01:00
import Dexie, { EntityTable } from "dexie";
import Settings from "./types/settings";
const SETTINGS_ID = "SSR"; // DO NOT CHANGE
export default class Database extends Dexie {
settings!: EntityTable<Settings, "id">;
constructor() {
super("ScoreSaberReloaded");
// Stores
this.version(1).stores({
settings: "id",
});
// Mapped tables
this.settings.mapToClass(Settings);
// Populate default settings if the table is empty
this.on("populate", () => this.populateDefaults());
}
async populateDefaults() {
await this.settings.add({
id: SETTINGS_ID, // Fixed ID for the single settings object
backgroundImage: "/assets/background.jpg",
});
}
/**
* Gets the settings from the database
*
* @returns the settings
*/
async getSettings(): Promise<Settings | undefined> {
return await this.settings.get(SETTINGS_ID);
}
/**
* Sets the settings in the database
*
* @param settings the settings to set
* @returns the settings
*/
async setSettings(settings: Settings) {
return await this.settings.update(SETTINGS_ID, settings);
}
}
export const db = new Database();