nukeop/nuclear

View on GitHub
packages/core/src/rest/Nuclear/Configuration.ts

Summary

Maintainability
B
5 hrs
Test Coverage
import { NuclearSupabaseService } from './NuclearSupabaseService';

export enum ConfigFlag {
    PROMOTED_ARTISTS = 'PROMOTED_ARTISTS',
}

export enum ParamKey {
    PROMOTED_ARTIST_BACKGROUND = 'PROMOTED_ARTIST_BACKGROUND',
}

export type Configuration = {
    [key in ConfigFlag]: boolean;
}

export type Parameters = {
    [key in ParamKey]: string;
}

export type ConfigurationDbType = {
    key: ConfigFlag;
    value: boolean;
};
export type ParamDbType = {
    key: ConfigFlag;
    value: string;
};

export class NuclearConfigurationService extends NuclearSupabaseService {
  async getConfiguration() {
    const dbConfiguration = await this.client
      .from<ConfigurationDbType>('config')
      .select();

    return dbConfiguration?.data.reduce((acc, curr) => {
      acc[curr.key] = curr.value;
      return acc;
    }, {} as Configuration);
  }

  async getParams() {
    const dbParams = await this.client
      .from<ParamDbType>('params')
      .select();

    return dbParams?.data?.reduce((acc, curr) => {
      acc[curr.key] = curr.value;
      return acc;
    }, {} as Parameters);
  }
}