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
|
const query = this.db
|
||||||
.select(COLUMNS)
|
.select(COLUMNS)
|
||||||
.from<IFeatureStrategiesTable>(T.featureStrategies)
|
.from<IFeatureStrategiesTable>(T.featureStrategies)
|
||||||
.where('environment', environment);
|
.whereIn('feature_name', features);
|
||||||
if (features) {
|
if (environment) {
|
||||||
query.whereIn('feature_name', features);
|
query.where('environment', environment);
|
||||||
}
|
}
|
||||||
const rows = await query;
|
const rows = await query;
|
||||||
return rows.map(mapRow);
|
return rows.map(mapRow);
|
||||||
|
@ -105,6 +105,19 @@ class FeatureTagStore implements IFeatureTagStore {
|
|||||||
return rows.map(this.featureTagRowToTag);
|
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> {
|
async tagFeature(featureName: string, tag: ITag): Promise<ITag> {
|
||||||
const stopTimer = this.timer('tagFeature');
|
const stopTimer = this.timer('tagFeature');
|
||||||
await this.db<FeatureTagTable>(TABLE)
|
await this.db<FeatureTagTable>(TABLE)
|
||||||
|
@ -100,7 +100,7 @@ export default class ExportImportService {
|
|||||||
),
|
),
|
||||||
this.segmentStore.getAllFeatureStrategySegments(),
|
this.segmentStore.getAllFeatureStrategySegments(),
|
||||||
this.contextFieldStore.getAll(),
|
this.contextFieldStore.getAll(),
|
||||||
this.featureTagStore.getAll(),
|
this.featureTagStore.getAllByFeatures(query.features),
|
||||||
this.segmentStore.getAll(),
|
this.segmentStore.getAll(),
|
||||||
]);
|
]);
|
||||||
this.addSegmentsToStrategies(featureStrategies, strategySegments);
|
this.addSegmentsToStrategies(featureStrategies, strategySegments);
|
||||||
|
@ -13,6 +13,7 @@ export interface IFeatureAndTag {
|
|||||||
}
|
}
|
||||||
export interface IFeatureTagStore extends Store<IFeatureTag, IFeatureTag> {
|
export interface IFeatureTagStore extends Store<IFeatureTag, IFeatureTag> {
|
||||||
getAllTagsForFeature(featureName: string): Promise<ITag[]>;
|
getAllTagsForFeature(featureName: string): Promise<ITag[]>;
|
||||||
|
getAllByFeatures(features: string[]): Promise<IFeatureTag[]>;
|
||||||
tagFeature(featureName: string, tag: ITag): Promise<ITag>;
|
tagFeature(featureName: string, tag: ITag): Promise<ITag>;
|
||||||
importFeatureTags(featureTags: IFeatureTag[]): Promise<IFeatureAndTag[]>;
|
importFeatureTags(featureTags: IFeatureTag[]): Promise<IFeatureAndTag[]>;
|
||||||
untagFeature(featureName: string, tag: ITag): Promise<void>;
|
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();
|
return Promise.resolve();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getAllByFeatures(features: string[]): Promise<IFeatureTag[]> {
|
||||||
|
return Promise.resolve(
|
||||||
|
this.featureTags.filter((tag) =>
|
||||||
|
features.includes(tag.featureName),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = FakeFeatureTagStore;
|
module.exports = FakeFeatureTagStore;
|
||||||
|
Loading…
Reference in New Issue
Block a user