mirror of
https://github.com/Unleash/unleash.git
synced 2025-09-28 17:55:15 +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');
|
.orderBy('final_rank');
|
||||||
|
|
||||||
if (this.flagResolver.isEnabled('flagsOverviewSearch')) {
|
if (this.flagResolver.isEnabled('flagsOverviewSearch')) {
|
||||||
finalQuery
|
this.buildChangeRequestSql(finalQuery);
|
||||||
.leftJoin(
|
this.buildReleasePlanSql(finalQuery);
|
||||||
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.queryExtraData(finalQuery);
|
this.queryExtraData(finalQuery);
|
||||||
const rows = await finalQuery;
|
const rows = await finalQuery;
|
||||||
stopTimer();
|
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(
|
private buildRankingSql(
|
||||||
favoritesFirst: undefined | boolean,
|
favoritesFirst: undefined | boolean,
|
||||||
sortBy: string,
|
sortBy: string,
|
||||||
|
Loading…
Reference in New Issue
Block a user