unleash-server
Version:
Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.
50 lines • 2.14 kB
TypeScript
import type { ISegmentStore } from './segment-store-type.js';
import type { IConstraint, IFeatureStrategySegment, ISegment } from '../../types/model.js';
import type { LogProvider } from '../../logger.js';
import type EventEmitter from 'events';
import type { PartialSome } from '../../types/partial.js';
import type { IAuditUser } from '../../types/user.js';
import type { Db } from '../../db/db.js';
import type { IFlagResolver } from '../../types/index.js';
interface ISegmentRow {
id: number;
name: string;
description?: string;
segment_project_id?: string;
created_by?: string;
created_at: Date;
used_in_projects?: number;
used_in_features?: number;
constraints: IConstraint[];
}
export default class SegmentStore implements ISegmentStore {
private logger;
private eventBus;
private db;
private flagResolver;
constructor(db: Db, eventBus: EventEmitter, getLogger: LogProvider, flagResolver: IFlagResolver);
count(): Promise<number>;
create(segment: PartialSome<ISegment, 'id'>, user: Pick<IAuditUser, 'username'>): Promise<ISegment>;
update(id: number, segment: Omit<ISegment, 'id'>): Promise<ISegment>;
delete(id: number): Promise<void>;
getAll(includeChangeRequestUsageData?: boolean): Promise<ISegment[]>;
private getAllWithoutChangeRequestUsageData;
private getAllWithChangeRequestUsageData;
private mapRowsWithUsageData;
private combineUsageData;
private mergeCurrentUsageWithCombinedData;
getByStrategy(strategyId: string): Promise<ISegment[]>;
deleteAll(): Promise<void>;
exists(id: number): Promise<boolean>;
get(id: number): Promise<ISegment>;
addToStrategy(id: number, strategyId: string): Promise<void>;
removeFromStrategy(id: number, strategyId: string): Promise<void>;
getAllFeatureStrategySegments(): Promise<IFeatureStrategySegment[]>;
existsByName(name: string): Promise<boolean>;
getProjectSegmentCount(projectId: string): Promise<number>;
prefixColumns(): string[];
mapRow(row?: ISegmentRow): ISegment;
destroy(): void;
}
export {};
//# sourceMappingURL=segment-store.d.ts.map