fix: only import feature_tags for imported features

This commit is contained in:
Christopher Kolstad
2021-07-30 13:38:28 +02:00
parent b1c8fea5c6
commit 9646bcfebb
3 changed files with 33 additions and 7 deletions
+11 -1
View File
@@ -71,8 +71,18 @@ class FeatureTagStore {
return tag;
}
/**
* Only gets tags for active feature toggles.
*/
async getAllFeatureTags(): Promise<IFeatureTag[]> {
const rows = await this.db(TABLE).select(COLUMNS);
const rows = await this.db(TABLE)
.select(COLUMNS)
.whereIn(
'feature_name',
this.db('features')
.where({ archived: false })
.select(['name']),
);
return rows.map(row => ({
featureName: row.feature_name,
tagType: row.tag_type,
+12
View File
@@ -112,11 +112,23 @@ class ProjectStore {
.onConflict('id')
.ignore();
if (rows.length > 0) {
await this.addGlobalEnvironment(rows);
return rows.map(this.mapRow);
}
return [];
}
async addGlobalEnvironment(projects): Promise<void> {
const environments = projects.map(p => ({
project_id: p.id,
environment_name: ':global:',
}));
await this.db('project_environments')
.insert(environments)
.onConflict(['project_id', 'environment_name'])
.ignore();
}
async dropProjects(): Promise<void> {
await this.db(TABLE).del();
}
+10 -6
View File
@@ -161,11 +161,15 @@ export default class StateService {
tagTypes: data.tagTypes,
tags: data.tags,
featureTags:
data.featureTags.map(t => ({
featureName: t.featureName,
tagValue: t.tagValue || t.value,
tagType: t.tagType || t.type,
})) || [],
data.featureTags
.filter(t =>
data.features.some(f => f.name === t.featureName),
)
.map(t => ({
featureName: t.featureName,
tagValue: t.tagValue || t.value,
tagType: t.tagType || t.type,
})) || [],
userName,
dropBeforeImport,
keepExisting,
@@ -522,7 +526,7 @@ export default class StateService {
: Promise.resolve([]),
includeTags ? this.tagTypeStore.getAll() : Promise.resolve([]),
includeTags ? this.tagStore.getAll() : Promise.resolve([]),
includeTags
includeTags && includeFeatureToggles
? this.featureTagStore.getAllFeatureTags()
: Promise.resolve([]),
includeFeatureToggles