mirror of
https://github.com/Unleash/unleash.git
synced 2025-07-26 13:48:33 +02:00
refactor: extract flags overview sql builders (#9751)
This commit is contained in:
parent
417d3b80a4
commit
ff3c17ffa7
@ -343,89 +343,10 @@ class FeatureSearchStore implements IFeatureSearchStore {
|
||||
.orderBy('final_rank');
|
||||
|
||||
if (this.flagResolver.isEnabled('flagsOverviewSearch')) {
|
||||
finalQuery
|
||||
.leftJoin(
|
||||
this.db('change_request_events AS cre')
|
||||
.join(
|
||||
'change_requests AS cr',
|
||||
'cre.change_request_id',
|
||||
'cr.id',
|
||||
)
|
||||
.select('cre.feature')
|
||||
.select(
|
||||
this.db.raw(
|
||||
'array_agg(distinct cre.change_request_id) AS change_request_ids',
|
||||
),
|
||||
)
|
||||
.select('cr.environment')
|
||||
.groupBy('cre.feature', 'cr.environment')
|
||||
.whereNotIn('cr.state', [
|
||||
'Applied',
|
||||
'Cancelled',
|
||||
'Rejected',
|
||||
])
|
||||
.as('feature_cr'),
|
||||
function () {
|
||||
this.on(
|
||||
'feature_cr.feature',
|
||||
'=',
|
||||
'ranked_features.feature_name',
|
||||
).andOn(
|
||||
'feature_cr.environment',
|
||||
'=',
|
||||
'ranked_features.environment',
|
||||
);
|
||||
},
|
||||
)
|
||||
.select('feature_cr.change_request_ids');
|
||||
|
||||
finalQuery
|
||||
.leftJoin(
|
||||
this.db
|
||||
.with('total_milestones', (qb) => {
|
||||
qb.select('release_plan_definition_id')
|
||||
.count('* as total_milestones')
|
||||
.from('milestones')
|
||||
.groupBy('release_plan_definition_id');
|
||||
})
|
||||
.select([
|
||||
'rpd.feature_name',
|
||||
'rpd.environment',
|
||||
'active_milestone.sort_order AS milestone_order',
|
||||
'total_milestones.total_milestones',
|
||||
'active_milestone.name AS milestone_name',
|
||||
])
|
||||
.from('release_plan_definitions AS rpd')
|
||||
.join(
|
||||
'total_milestones',
|
||||
'total_milestones.release_plan_definition_id',
|
||||
'rpd.id',
|
||||
)
|
||||
.join(
|
||||
'milestones AS active_milestone',
|
||||
'active_milestone.id',
|
||||
'rpd.active_milestone_id',
|
||||
)
|
||||
.where('rpd.discriminator', 'plan')
|
||||
.as('feature_release_plan'),
|
||||
function () {
|
||||
this.on(
|
||||
'feature_release_plan.feature_name',
|
||||
'=',
|
||||
'ranked_features.feature_name',
|
||||
).andOn(
|
||||
'feature_release_plan.environment',
|
||||
'=',
|
||||
'ranked_features.environment',
|
||||
);
|
||||
},
|
||||
)
|
||||
.select([
|
||||
'feature_release_plan.milestone_name',
|
||||
'feature_release_plan.milestone_order',
|
||||
'feature_release_plan.total_milestones',
|
||||
]);
|
||||
this.buildChangeRequestSql(finalQuery);
|
||||
this.buildReleasePlanSql(finalQuery);
|
||||
}
|
||||
|
||||
this.queryExtraData(finalQuery);
|
||||
const rows = await finalQuery;
|
||||
stopTimer();
|
||||
@ -514,6 +435,93 @@ class FeatureSearchStore implements IFeatureSearchStore {
|
||||
);
|
||||
}
|
||||
|
||||
private buildReleasePlanSql(queryBuilder: Knex.QueryBuilder) {
|
||||
queryBuilder
|
||||
.leftJoin(
|
||||
this.db
|
||||
.with('total_milestones', (qb) => {
|
||||
qb.select('release_plan_definition_id')
|
||||
.count('* as total_milestones')
|
||||
.from('milestones')
|
||||
.groupBy('release_plan_definition_id');
|
||||
})
|
||||
.select([
|
||||
'rpd.feature_name',
|
||||
'rpd.environment',
|
||||
'active_milestone.sort_order AS milestone_order',
|
||||
'total_milestones.total_milestones',
|
||||
'active_milestone.name AS milestone_name',
|
||||
])
|
||||
.from('release_plan_definitions AS rpd')
|
||||
.join(
|
||||
'total_milestones',
|
||||
'total_milestones.release_plan_definition_id',
|
||||
'rpd.id',
|
||||
)
|
||||
.join(
|
||||
'milestones AS active_milestone',
|
||||
'active_milestone.id',
|
||||
'rpd.active_milestone_id',
|
||||
)
|
||||
.where('rpd.discriminator', 'plan')
|
||||
.as('feature_release_plan'),
|
||||
function () {
|
||||
this.on(
|
||||
'feature_release_plan.feature_name',
|
||||
'=',
|
||||
'ranked_features.feature_name',
|
||||
).andOn(
|
||||
'feature_release_plan.environment',
|
||||
'=',
|
||||
'ranked_features.environment',
|
||||
);
|
||||
},
|
||||
)
|
||||
.select([
|
||||
'feature_release_plan.milestone_name',
|
||||
'feature_release_plan.milestone_order',
|
||||
'feature_release_plan.total_milestones',
|
||||
]);
|
||||
}
|
||||
|
||||
private buildChangeRequestSql(queryBuilder: Knex.QueryBuilder) {
|
||||
queryBuilder
|
||||
.leftJoin(
|
||||
this.db('change_request_events AS cre')
|
||||
.join(
|
||||
'change_requests AS cr',
|
||||
'cre.change_request_id',
|
||||
'cr.id',
|
||||
)
|
||||
.select('cre.feature')
|
||||
.select(
|
||||
this.db.raw(
|
||||
'array_agg(distinct cre.change_request_id) AS change_request_ids',
|
||||
),
|
||||
)
|
||||
.select('cr.environment')
|
||||
.groupBy('cre.feature', 'cr.environment')
|
||||
.whereNotIn('cr.state', [
|
||||
'Applied',
|
||||
'Cancelled',
|
||||
'Rejected',
|
||||
])
|
||||
.as('feature_cr'),
|
||||
function () {
|
||||
this.on(
|
||||
'feature_cr.feature',
|
||||
'=',
|
||||
'ranked_features.feature_name',
|
||||
).andOn(
|
||||
'feature_cr.environment',
|
||||
'=',
|
||||
'ranked_features.environment',
|
||||
);
|
||||
},
|
||||
)
|
||||
.select('feature_cr.change_request_ids');
|
||||
}
|
||||
|
||||
private buildRankingSql(
|
||||
favoritesFirst: undefined | boolean,
|
||||
sortBy: string,
|
||||
|
Loading…
Reference in New Issue
Block a user