33 lines
973 B
TypeScript
33 lines
973 B
TypeScript
import {Injectable, Logger} from '@nestjs/common';
|
|
import {SharedService} from "../shared/shared.service";
|
|
|
|
export interface IFeatureFlagStatus {
|
|
name: string;
|
|
state: boolean;
|
|
}
|
|
|
|
@Injectable()
|
|
export class FeatureflagService {
|
|
private logger = new Logger(FeatureflagService.name);
|
|
constructor(private sharedService: SharedService ) {
|
|
}
|
|
|
|
async getFeatureFlag(id: string): Promise<IFeatureFlagStatus> {
|
|
this.logger.verbose(`Getting feature flag status for ${id}`);
|
|
const state = await this.sharedService.getConfig(`featureflag/${id}`);
|
|
return {
|
|
name: id,
|
|
state: state.value !== 'false',
|
|
}
|
|
}
|
|
|
|
async setFeatureFlag(id: string, status: boolean) : Promise<IFeatureFlagStatus> {
|
|
this.logger.verbose(`Setting feature flag status for ${id} to ${status} `);
|
|
const result = await this.sharedService.setConfig(`featureflag/${id}`, status.toString());
|
|
return {
|
|
name: id,
|
|
state: result.value !== 'false',
|
|
}
|
|
}
|
|
|
|
}
|