1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-08-18 13:48:58 +02:00
This commit is contained in:
sjaanus 2023-09-25 11:49:19 +03:00
parent 7cded94ece
commit 2f06bbf598
No known key found for this signature in database
GPG Key ID: 20E007C0248BA7FF
3 changed files with 18 additions and 13 deletions

View File

@ -559,7 +559,11 @@ class ProjectStore implements IProjectStore {
async getProjectModeCounts(): Promise<ProjectModeCount[]> { async getProjectModeCounts(): Promise<ProjectModeCount[]> {
const result: ProjectModeCount[] = await this.db const result: ProjectModeCount[] = await this.db
.select(`${SETTINGS_TABLE}.project_mode as mode`) .select(
this.db.raw(
`COALESCE(${SETTINGS_TABLE}.project_mode, 'open') as mode`,
),
)
.count(`${TABLE}.id as count`) .count(`${TABLE}.id as count`)
.from(`${TABLE}`) .from(`${TABLE}`)
.join( .join(
@ -567,7 +571,9 @@ class ProjectStore implements IProjectStore {
`${TABLE}.id`, `${TABLE}.id`,
`${SETTINGS_TABLE}.project`, `${SETTINGS_TABLE}.project`,
) )
.groupBy(`${SETTINGS_TABLE}.project_mode`); .groupBy(
this.db.raw(`COALESCE(${SETTINGS_TABLE}.project_mode, 'open')`),
);
return result.map(this.mapProjectModeCount); return result.map(this.mapProjectModeCount);
} }

View File

@ -48,9 +48,10 @@ export interface InstanceStats {
activeUsers: Awaited<ReturnType<GetActiveUsers>>; activeUsers: Awaited<ReturnType<GetActiveUsers>>;
} }
export interface InstanceStatsSigned extends InstanceStats { export type InstanceStatsSigned = Omit<InstanceStats, 'projects'> & {
projects: number;
sum: string; sum: string;
} };
export class InstanceStatsService { export class InstanceStatsService {
private logger: Logger; private logger: Logger;
@ -280,10 +281,13 @@ export class InstanceStatsService {
async getSignedStats(): Promise<InstanceStatsSigned> { async getSignedStats(): Promise<InstanceStatsSigned> {
const instanceStats = await this.getStats(); const instanceStats = await this.getStats();
const totalProjects = instanceStats.projects
.map((p) => p.count)
.reduce((a, b) => a + b, 0);
const sum = sha256( const sum = sha256(
`${instanceStats.instanceId}${instanceStats.users}${instanceStats.featureToggles}${instanceStats.projects}${instanceStats.roles}${instanceStats.groups}${instanceStats.environments}${instanceStats.segments}`, `${instanceStats.instanceId}${instanceStats.users}${instanceStats.featureToggles}${totalProjects}${instanceStats.roles}${instanceStats.groups}${instanceStats.environments}${instanceStats.segments}`,
); );
return { ...instanceStats, sum }; return { ...instanceStats, sum, projects: totalProjects };
} }
} }

View File

@ -7,7 +7,6 @@ import Controller from '../controller';
import { NONE } from '../../types/permissions'; import { NONE } from '../../types/permissions';
import { UiConfigSchema } from '../../openapi/spec/ui-config-schema'; import { UiConfigSchema } from '../../openapi/spec/ui-config-schema';
import { import {
InstanceStats,
InstanceStatsService, InstanceStatsService,
InstanceStatsSigned, InstanceStatsSigned,
} from '../../features/instance-stats/instance-stats-service'; } from '../../features/instance-stats/instance-stats-service';
@ -97,11 +96,7 @@ class InstanceAdminController extends Controller {
featureToggles: 29, featureToggles: 29,
groups: 3, groups: 3,
instanceId: 'ed3861ae-78f9-4e8c-8e57-b57efc15f82b', instanceId: 'ed3861ae-78f9-4e8c-8e57-b57efc15f82b',
projects: [ projects: 4,
{ mode: 'open', count: 5 },
{ mode: 'protected', count: 2 },
{ mode: 'private', count: 1 },
],
roles: 5, roles: 5,
customRootRoles: 2, customRootRoles: 2,
customRootRolesInUse: 1, customRootRolesInUse: 1,
@ -123,7 +118,7 @@ class InstanceAdminController extends Controller {
async getStatistics( async getStatistics(
req: AuthedRequest, req: AuthedRequest,
res: Response<InstanceStats>, res: Response<InstanceStatsSigned>,
): Promise<void> { ): Promise<void> {
const instanceStats = await this.instanceStatsService.getSignedStats(); const instanceStats = await this.instanceStatsService.getSignedStats();
res.json(instanceStats); res.json(instanceStats);