mirror of
https://github.com/Unleash/unleash.git
synced 2025-02-04 00:18:01 +01:00
exclude tags for other features (#3007)
This commit is contained in:
parent
d821b1ead1
commit
f8473a243f
@ -208,9 +208,9 @@ class FeatureStrategiesStore implements IFeatureStrategiesStore {
|
||||
const query = this.db
|
||||
.select(COLUMNS)
|
||||
.from<IFeatureStrategiesTable>(T.featureStrategies)
|
||||
.where('environment', environment);
|
||||
if (features) {
|
||||
query.whereIn('feature_name', features);
|
||||
.whereIn('feature_name', features);
|
||||
if (environment) {
|
||||
query.where('environment', environment);
|
||||
}
|
||||
const rows = await query;
|
||||
return rows.map(mapRow);
|
||||
|
@ -105,6 +105,19 @@ class FeatureTagStore implements IFeatureTagStore {
|
||||
return rows.map(this.featureTagRowToTag);
|
||||
}
|
||||
|
||||
async getAllByFeatures(features: string[]): Promise<IFeatureTag[]> {
|
||||
const query = this.db
|
||||
.select(COLUMNS)
|
||||
.from<FeatureTagTable>(TABLE)
|
||||
.whereIn('feature_name', features);
|
||||
const rows = await query;
|
||||
return rows.map((row) => ({
|
||||
featureName: row.feature_name,
|
||||
tagType: row.tag_type,
|
||||
tagValue: row.tag_value,
|
||||
}));
|
||||
}
|
||||
|
||||
async tagFeature(featureName: string, tag: ITag): Promise<ITag> {
|
||||
const stopTimer = this.timer('tagFeature');
|
||||
await this.db<FeatureTagTable>(TABLE)
|
||||
|
@ -100,7 +100,7 @@ export default class ExportImportService {
|
||||
),
|
||||
this.segmentStore.getAllFeatureStrategySegments(),
|
||||
this.contextFieldStore.getAll(),
|
||||
this.featureTagStore.getAll(),
|
||||
this.featureTagStore.getAllByFeatures(query.features),
|
||||
this.segmentStore.getAll(),
|
||||
]);
|
||||
this.addSegmentsToStrategies(featureStrategies, strategySegments);
|
||||
|
@ -13,6 +13,7 @@ export interface IFeatureAndTag {
|
||||
}
|
||||
export interface IFeatureTagStore extends Store<IFeatureTag, IFeatureTag> {
|
||||
getAllTagsForFeature(featureName: string): Promise<ITag[]>;
|
||||
getAllByFeatures(features: string[]): Promise<IFeatureTag[]>;
|
||||
tagFeature(featureName: string, tag: ITag): Promise<ITag>;
|
||||
importFeatureTags(featureTags: IFeatureTag[]): Promise<IFeatureAndTag[]>;
|
||||
untagFeature(featureName: string, tag: ITag): Promise<void>;
|
||||
|
8
src/test/fixtures/fake-feature-tag-store.ts
vendored
8
src/test/fixtures/fake-feature-tag-store.ts
vendored
@ -83,6 +83,14 @@ export default class FakeFeatureTagStore implements IFeatureTagStore {
|
||||
});
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
getAllByFeatures(features: string[]): Promise<IFeatureTag[]> {
|
||||
return Promise.resolve(
|
||||
this.featureTags.filter((tag) =>
|
||||
features.includes(tag.featureName),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = FakeFeatureTagStore;
|
||||
|
Loading…
Reference in New Issue
Block a user