unleash-server
Version:
Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.
111 lines • 4.07 kB
TypeScript
import { type IBaseEvent, type IEvent } from '../../events/index.js';
import type { LogProvider } from '../../logger.js';
import type { IEventSearchParams, IEventStore } from '../../types/stores/event-store.js';
import type { Db } from '../../db/db.js';
import type { Knex } from 'knex';
import type EventEmitter from 'node:events';
import type { ProjectActivitySchema } from '../../openapi/index.js';
import type { IQueryParam } from '../feature-toggle/types/feature-toggle-strategies-store-type.js';
import type { ITag } from '../../tags/index.js';
export type IQueryOperations = IWhereOperation | IBeforeDateOperation | IBetweenDatesOperation | IForFeaturesOperation;
interface IWhereOperation {
op: 'where';
parameters: {
[key: string]: string;
};
}
interface IBeforeDateOperation {
op: 'beforeDate';
parameters: {
dateAccessor: string;
date: string;
};
}
interface IBetweenDatesOperation {
op: 'betweenDate';
parameters: {
dateAccessor: string;
range: string[];
};
}
interface IForFeaturesOperation {
op: 'forFeatures';
parameters: IForFeaturesParams;
}
interface IForFeaturesParams {
type: string;
projectId: string;
environments: string[];
features: string[];
}
export interface IEventTable {
id: number;
type: string;
created_by: string;
created_at: Date;
created_by_user_id: number;
data?: any;
pre_data?: any;
feature_name?: string;
project?: string;
environment?: string;
tags: ITag[];
ip?: string;
group_type: string | null;
group_id: string | null;
}
export declare class EventStore implements IEventStore {
private db;
private eventEmitter;
private logger;
private metricTimer;
constructor(db: Db, getLogger: LogProvider);
store(event: IBaseEvent): Promise<void>;
count(): Promise<number>;
searchEventsCount(queryParams: IQueryParam[], query?: IEventSearchParams['query']): Promise<number>;
batchStore(events: IBaseEvent[]): Promise<void>;
getMaxRevisionId(largerThan?: number): Promise<number>;
getRevisionRange(start: number, end: number): Promise<IEvent[]>;
delete(key: number): Promise<void>;
deleteAll(): Promise<void>;
destroy(): void;
exists(key: number): Promise<boolean>;
query(operations: IQueryOperations[]): Promise<IEvent[]>;
queryCount(operations: IQueryOperations[]): Promise<number>;
where(query: Knex.QueryBuilder, parameters: {
[key: string]: string;
}): Knex.QueryBuilder;
beforeDate(query: Knex.QueryBuilder, parameters: {
dateAccessor: string;
date: string;
}): Knex.QueryBuilder;
betweenDate(query: Knex.QueryBuilder, parameters: {
dateAccessor: string;
range: string[];
}): Knex.QueryBuilder;
select(): Knex.QueryBuilder;
forFeatures(query: Knex.QueryBuilder, parameters: IForFeaturesParams): Knex.QueryBuilder;
get(key: number): Promise<IEvent>;
getAll(query?: Object): Promise<IEvent[]>;
getEvents(query?: Object): Promise<IEvent[]>;
searchEvents(params: IEventSearchParams, queryParams: IQueryParam[], options?: {
withIp?: boolean;
}): Promise<IEvent[]>;
private buildSearchQuery;
getEventCreators(): Promise<Array<{
id: number;
name: string;
}>>;
getProjectRecentEventActivity(project: string): Promise<ProjectActivitySchema>;
rowToEvent(row: IEventTable): IEvent;
eventToDbRow(e: IBaseEvent): Omit<IEventTable, 'id' | 'created_at'>;
setMaxListeners(number: number): EventEmitter;
on(eventName: string | symbol, listener: (...args: any[]) => void): EventEmitter;
emit(eventName: string | symbol, ...args: any[]): boolean;
off(eventName: string | symbol, listener: (...args: any[]) => void): EventEmitter;
setUnannouncedToAnnounced(): Promise<IEvent[]>;
publishUnannouncedEvents(): Promise<void>;
setCreatedByUserId(batchSize: number): Promise<number | undefined>;
}
export default EventStore;
//# sourceMappingURL=event-store.d.ts.map