Skip to content

Commit

Permalink
fix: fix unstable search (#7391)
Browse files Browse the repository at this point in the history
Reverting

#7387
#7385
  • Loading branch information
sjaanus authored Jun 13, 2024
1 parent 09d9676 commit 1191f16
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 73 deletions.
63 changes: 7 additions & 56 deletions src/lib/features/feature-search/feature-search-store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,10 +86,7 @@ class FeatureSearchStore implements IFeatureSearchStore {
.distinctOn('stage_feature')
.orderBy([
'stage_feature',
{
column: 'entered_stage_at',
order: 'desc',
},
{ column: 'entered_stage_at', order: 'desc' },
]);
}

Expand Down Expand Up @@ -164,6 +161,12 @@ class FeatureSearchStore implements IFeatureSearchStore {

selectColumns = [
...selectColumns,
this.db.raw(
'EXISTS (SELECT 1 FROM feature_strategies WHERE feature_strategies.feature_name = features.name AND feature_strategies.environment = feature_environments.environment) as has_strategies',
),
this.db.raw(
'EXISTS (SELECT 1 FROM feature_strategies WHERE feature_strategies.feature_name = features.name AND feature_strategies.environment = feature_environments.environment AND (feature_strategies.disabled IS NULL OR feature_strategies.disabled = false)) as has_enabled_strategies',
),
this.db.raw(`CASE
WHEN dependent_features.parent = features.name THEN 'parent'
WHEN dependent_features.child = features.name THEN 'child'
Expand Down Expand Up @@ -321,8 +324,6 @@ class FeatureSearchStore implements IFeatureSearchStore {
.joinRaw('CROSS JOIN total_features')
.whereBetween('final_rank', [offset + 1, offset + limit])
.orderBy('final_rank');

this.applyStrategiesByEnvironment(finalQuery);
if (featureLifecycleEnabled) {
finalQuery.leftJoin(
'lifecycle',
Expand Down Expand Up @@ -350,56 +351,6 @@ class FeatureSearchStore implements IFeatureSearchStore {
};
}

private applyStrategiesByEnvironment(queryBuilder: Knex.QueryBuilder) {
queryBuilder.select(
this.db.raw(
'has_strategies.feature_name IS NOT NULL AS has_strategies',
),
this.db.raw(
'enabled_strategies.feature_name IS NOT NULL AS has_enabled_strategies',
),
);
queryBuilder
.leftJoin(
this.db
.select('feature_name', 'environment')
.from('feature_strategies')
.where(function () {
this.whereNull('disabled').orWhere('disabled', false);
})
.as('enabled_strategies'),
function () {
this.on(
'enabled_strategies.feature_name',
'=',
'ranked_features.feature_name',
).andOn(
'enabled_strategies.environment',
'=',
'ranked_features.environment',
);
},
)
.leftJoin(
this.db
.select('feature_name', 'environment')
.from('feature_strategies')
.groupBy('feature_name', 'environment')
.as('has_strategies'),
function () {
this.on(
'has_strategies.feature_name',
'=',
'ranked_features.feature_name',
).andOn(
'has_strategies.environment',
'=',
'ranked_features.environment',
);
},
);
}

private buildRankingSql(
favoritesFirst: undefined | boolean,
sortBy: string,
Expand Down
17 changes: 0 additions & 17 deletions src/lib/features/feature-search/feature.search.e2e.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -776,23 +776,6 @@ test('should return segments in payload with no duplicates/nulls', async () => {
{
name: 'my_feature_a',
segments: [mySegment.name],
environments: [
{
name: 'default',
hasStrategies: true,
hasEnabledStrategies: true,
},
{
name: 'development',
hasStrategies: true,
hasEnabledStrategies: true,
},
{
name: 'production',
hasStrategies: false,
hasEnabledStrategies: false,
},
],
},
],
});
Expand Down

0 comments on commit 1191f16

Please sign in to comment.