mirror of
https://github.com/Unleash/unleash.git
synced 2025-08-18 13:48:58 +02:00
feat: add hasStrategies and hasEnabledStrategies on feature environments
This commit is contained in:
parent
7b7a2a706c
commit
16575c4f4b
@ -374,6 +374,10 @@ export const ProjectFeatureToggles = ({
|
||||
enabled: thisEnv?.enabled || false,
|
||||
variantCount: thisEnv?.variantCount || 0,
|
||||
lastSeenAt: thisEnv?.lastSeenAt,
|
||||
type: thisEnv?.type,
|
||||
hasStrategies: thisEnv?.hasStrategies,
|
||||
hasEnabledStrategies:
|
||||
thisEnv?.hasEnabledStrategies,
|
||||
},
|
||||
];
|
||||
}),
|
||||
|
@ -17,6 +17,9 @@ export interface IEnvironments {
|
||||
enabled: boolean;
|
||||
variantCount: number;
|
||||
lastSeenAt?: string | null;
|
||||
type?: string;
|
||||
hasStrategies?: boolean;
|
||||
hasEnabledStrategies?: boolean;
|
||||
}
|
||||
|
||||
export interface IFeatureToggle {
|
||||
|
@ -479,6 +479,8 @@ class FeatureStrategiesStore implements IFeatureStrategiesStore {
|
||||
sortOrder: r.environment_sort_order,
|
||||
variantCount: r.variants?.length || 0,
|
||||
lastSeenAt: r.env_last_seen_at,
|
||||
hasStrategies: r.has_strategies,
|
||||
hasEnabledStrategies: r.has_enabled_strategies,
|
||||
};
|
||||
}
|
||||
|
||||
@ -546,7 +548,18 @@ class FeatureStrategiesStore implements IFeatureStrategiesStore {
|
||||
'feature_environments.environment',
|
||||
'environments.name',
|
||||
)
|
||||
.leftJoin('feature_tag as ft', 'ft.feature_name', 'features.name');
|
||||
.leftJoin('feature_tag as ft', 'ft.feature_name', 'features.name')
|
||||
.leftJoin('feature_strategies', function () {
|
||||
this.on(
|
||||
'feature_strategies.feature_name',
|
||||
'=',
|
||||
'features.name',
|
||||
).andOn(
|
||||
'feature_strategies.environment',
|
||||
'=',
|
||||
'feature_environments.environment',
|
||||
);
|
||||
});
|
||||
|
||||
if (this.flagResolver.isEnabled('useLastSeenRefactor')) {
|
||||
query.leftJoin(
|
||||
@ -599,12 +612,21 @@ class FeatureStrategiesStore implements IFeatureStrategiesStore {
|
||||
];
|
||||
}
|
||||
|
||||
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',
|
||||
),
|
||||
];
|
||||
|
||||
query = query.select(selectColumns);
|
||||
const rows = await query;
|
||||
|
||||
if (rows.length > 0) {
|
||||
const overview = this.getFeatureOverviewData(getUniqueRows(rows));
|
||||
|
||||
return sortEnvironments(overview);
|
||||
}
|
||||
return [];
|
||||
|
@ -71,6 +71,15 @@ export const featureEnvironmentSchema = {
|
||||
description:
|
||||
'The date when metrics where last collected for the feature environment',
|
||||
},
|
||||
hasStrategies: {
|
||||
type: 'boolean',
|
||||
description: 'Whether the feature has any strategies defined.',
|
||||
},
|
||||
hasEnabledStrategies: {
|
||||
type: 'boolean',
|
||||
description:
|
||||
'Whether the feature has any enabled strategies defined.',
|
||||
},
|
||||
},
|
||||
components: {
|
||||
schemas: {
|
||||
|
@ -194,6 +194,8 @@ export interface IEnvironmentBase {
|
||||
|
||||
export interface IEnvironmentOverview extends IEnvironmentBase {
|
||||
variantCount: number;
|
||||
hasStrategies: boolean;
|
||||
hasEnabledStrategies: boolean;
|
||||
}
|
||||
|
||||
export interface IFeatureOverview {
|
||||
|
Loading…
Reference in New Issue
Block a user