1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-09-10 17:53:36 +02:00

refactor: separate fake admin and client store

This commit is contained in:
kwasniew 2023-03-09 11:19:33 +01:00
parent b4d1bd8059
commit 2fdfd96282
No known key found for this signature in database
GPG Key ID: 43A7CBC24C119560

View File

@ -0,0 +1,63 @@
import { FeatureToggle, IFeatureToggleQuery } from '../../lib/types/model';
import { IGetAdminFeatures } from '../../lib/db/feature-toggle-client-store';
import { IFeatureToggleAdminStore } from '../../lib/types/stores/feature-toggle-admin-store';
export default class FakeFeatureToggleAdminStore
implements IFeatureToggleAdminStore
{
featureToggles: FeatureToggle[] = [];
async getFeatures(
featureQuery?: IFeatureToggleQuery,
archived: boolean = false,
): Promise<FeatureToggle[]> {
const rows = this.featureToggles.filter((toggle) => {
if (featureQuery.namePrefix) {
if (featureQuery.project) {
return (
toggle.name.startsWith(featureQuery.namePrefix) &&
featureQuery.project.some((project) =>
project.includes(toggle.project),
)
);
}
return toggle.name.startsWith(featureQuery.namePrefix);
}
if (featureQuery.project) {
return featureQuery.project.some((project) =>
project.includes(toggle.project),
);
}
return toggle.archived === archived;
});
const clientRows: FeatureToggle[] = rows.map((t) => ({
...t,
enabled: true,
strategies: [],
description: t.description || '',
type: t.type || 'Release',
stale: t.stale || false,
variants: [],
tags: [],
}));
return Promise.resolve(clientRows);
}
async getAdmin({
featureQuery: query,
archived,
}: IGetAdminFeatures): Promise<FeatureToggle[]> {
return this.getFeatures(query, archived);
}
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
async createFeature(feature: any): Promise<void> {
this.featureToggles.push({
project: feature.project || 'default',
createdAt: new Date(),
archived: false,
...feature,
});
return Promise.resolve();
}
}