Skip to content

SudoSOS Back-end API / internal/server-settings / ServerSettingsStore

Class: ServerSettingsStore<T> ​

Store of global server settings, which are key-value pairs stored in the database. Used for settings that fit a database store better than an environment variable, as the latter should contain mostly secrets to get things to work, not to configure stuff.

Type Parameters ​

Type ParameterDefault type
T extends keyof ISettingskeyof ISettings

Constructors ​

Constructor ​

ts
new ServerSettingsStore<T>(): ServerSettingsStore<T>;

Returns ​

ServerSettingsStore<T>

Accessors ​

initialized ​

Get Signature ​

ts
get initialized(): boolean;
Returns ​

boolean

Methods ​

getSetting() ​

ts
getSetting(key): ISettings[T];

Get a server setting. If the setting is subject to change during runtime, use the "getSettingFromDatabase" method instead.

Parameters ​

ParameterTypeDescription
keyT-

Returns ​

ISettings[T]


getSettingFromDatabase() ​

ts
getSettingFromDatabase(key): Promise<ISettings[T]>;

Get a server setting from the database. This ensures it is always up to date, but adds some latency due to a database query.

Parameters ​

ParameterTypeDescription
keyT-

Returns ​

Promise<ISettings[T]>


initialize() ​

ts
initialize(): Promise<ServerSettingsStore<T>>;

Fetch all key-value pairs from the database

Returns ​

Promise<ServerSettingsStore<T>>


setSetting() ​

ts
setSetting(key, value): Promise<ServerSetting<keyof ISettings>>;

Update a server setting

Parameters ​

ParameterTypeDescription
keyT-
valueISettings[T]-

Returns ​

Promise<ServerSetting<keyof ISettings>>


deleteInstance() ​

ts
static deleteInstance(): void;

Only for testing, never use in production

Returns ​

void


getInstance() ​

ts
static getInstance(): ServerSettingsStore<keyof ISettings>;

Singleton, because there is only one copy of the core running at a time. We can therefore simply initialize the store once and keep it up to date from memory.

Returns ​

ServerSettingsStore<keyof ISettings>


getSettingFromDatabase() ​

ts
static getSettingFromDatabase<T>(key): Promise<ISettings[T]>;

Get a server setting from the database. Returns null if it does not exist. Compared to the class method, this method does not update the internal cache.

Type Parameters ​

Type Parameter
T extends keyof ISettings

Parameters ​

ParameterTypeDescription
keyT-

Returns ​

Promise<ISettings[T]>