unleash-server
Version:
Unleash is an enterprise ready feature toggles service. It provides different strategies for handling feature toggles.
62 lines (61 loc) • 2.24 kB
TypeScript
/// <reference types="node" />
import { Knex } from 'knex';
import EventEmitter from 'events';
import { LogProvider } from '../logger';
import { FeatureToggle, FeatureToggleDTO, IVariant } from '../types/model';
import { IFeatureToggleStore } from '../types/stores/feature-toggle-store';
export interface FeaturesTable {
name: string;
description: string;
type: string;
stale: boolean;
project: string;
last_seen_at?: Date;
created_at?: Date;
impression_data: boolean;
archived?: boolean;
archived_at?: Date;
}
interface VariantDTO {
variants: IVariant[];
}
export default class FeatureToggleStore implements IFeatureToggleStore {
private db;
private logger;
private timer;
constructor(db: Knex, eventBus: EventEmitter, getLogger: LogProvider);
count(query?: {
archived?: boolean;
project?: string;
stale?: boolean;
}): Promise<number>;
deleteAll(): Promise<void>;
destroy(): void;
get(name: string): Promise<FeatureToggle>;
getAll(query?: {
archived?: boolean;
project?: string;
stale?: boolean;
}): Promise<FeatureToggle[]>;
/**
* Get projectId from feature filtered by name. Used by Rbac middleware
* @deprecated
* @param name
*/
getProjectId(name: string): Promise<string>;
exists(name: string): Promise<boolean>;
setLastSeen(toggleNames: string[]): Promise<void>;
static filterByArchived: Knex.QueryCallbackWithArgs;
rowToFeature(row: FeaturesTable): FeatureToggle;
rowToEnvVariants(variantRows: VariantDTO[]): IVariant[];
dtoToRow(project: string, data: FeatureToggleDTO): FeaturesTable;
create(project: string, data: FeatureToggleDTO): Promise<FeatureToggle>;
update(project: string, data: FeatureToggleDTO): Promise<FeatureToggle>;
archive(name: string): Promise<FeatureToggle>;
delete(name: string): Promise<void>;
revive(name: string): Promise<FeatureToggle>;
getVariants(featureName: string): Promise<IVariant[]>;
getVariantsForEnv(featureName: string, environment: string): Promise<IVariant[]>;
saveVariants(project: string, featureName: string, newVariants: IVariant[]): Promise<FeatureToggle>;
}
export {};