mirror of
https://github.com/Unleash/unleash.git
synced 2025-09-10 17:53:36 +02:00
add get and update functionality to project environments change request config
This commit is contained in:
parent
b9f55a3fbc
commit
1c71ff8965
@ -15,11 +15,13 @@ export interface IProjectEnvironment {
|
||||
export interface IEnvironmentPayload {
|
||||
name: string;
|
||||
type: string;
|
||||
changeRequestsEnabled?: boolean;
|
||||
}
|
||||
|
||||
export interface IEnvironmentEditPayload {
|
||||
sortOrder: number;
|
||||
type: string;
|
||||
changeRequestsEnabled?: boolean;
|
||||
}
|
||||
|
||||
export interface IEnvironmentClonePayload {
|
||||
|
@ -6,8 +6,10 @@ import { IEnvironment, IProject, IProjectWithCount } from '../types/model';
|
||||
import {
|
||||
IProjectHealthUpdate,
|
||||
IProjectInsert,
|
||||
IProjectEnvironmentConfig,
|
||||
IProjectQuery,
|
||||
IProjectStore,
|
||||
IUpdateProjectEnvironmentConfig,
|
||||
} from '../types/stores/project-store';
|
||||
import { DEFAULT_ENV } from '../util/constants';
|
||||
import metricsHelper from '../util/metrics-helper';
|
||||
@ -223,7 +225,11 @@ class ProjectStore implements IProjectStore {
|
||||
environments: string[],
|
||||
): Promise<IEnvironmentProjectLink[]> {
|
||||
let rows = await this.db('project_environments')
|
||||
.select(['project_id', 'environment_name'])
|
||||
.select([
|
||||
'project_id',
|
||||
'environment_name',
|
||||
'change_request_enabled',
|
||||
])
|
||||
.whereIn('environment_name', environments);
|
||||
return rows.map(this.mapLinkRow);
|
||||
}
|
||||
@ -289,6 +295,43 @@ class ProjectStore implements IProjectStore {
|
||||
.pluck('project_environments.environment_name');
|
||||
}
|
||||
|
||||
async getChangeRequestConfigForProject(
|
||||
id: string,
|
||||
): Promise<IProjectEnvironmentConfig[]> {
|
||||
return this.db('project_environments')
|
||||
.select(
|
||||
'project_environments.environment_name as environment',
|
||||
'environments.type as type',
|
||||
'project_environments.change_request_enabled as changeRequestEnabled',
|
||||
)
|
||||
.where({
|
||||
project_id: id,
|
||||
})
|
||||
.innerJoin(
|
||||
'environments',
|
||||
'project_environments.environment_name',
|
||||
'environments.name',
|
||||
)
|
||||
.orderBy('environments.sort_order', 'asc')
|
||||
.orderBy('project_environments.environment_name', 'asc');
|
||||
}
|
||||
|
||||
async updateProjectEnvironmentConfig(
|
||||
id: string,
|
||||
data: IUpdateProjectEnvironmentConfig,
|
||||
): Promise<void> {
|
||||
try {
|
||||
await this.db('project_environments')
|
||||
.where({ project_id: id, environment_name: data.environment })
|
||||
.update({ change_request_enabled: data.changeRequestsEnabled });
|
||||
} catch (err) {
|
||||
this.logger.error(
|
||||
'Could not update project environment, error: ',
|
||||
err,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
async getMembersCount(): Promise<IProjectMembersCount[]> {
|
||||
const members = await this.db
|
||||
.select('project')
|
||||
|
@ -30,7 +30,12 @@ import { IEnvironmentStore } from '../types/stores/environment-store';
|
||||
import { IFeatureTypeStore } from '../types/stores/feature-type-store';
|
||||
import { IFeatureToggleStore } from '../types/stores/feature-toggle-store';
|
||||
import { IFeatureEnvironmentStore } from '../types/stores/feature-environment-store';
|
||||
import { IProjectQuery, IProjectStore } from '../types/stores/project-store';
|
||||
import {
|
||||
IProjectEnvironmentConfig,
|
||||
IProjectQuery,
|
||||
IProjectStore,
|
||||
IUpdateProjectEnvironmentConfig,
|
||||
} from '../types/stores/project-store';
|
||||
import {
|
||||
IProjectAccessModel,
|
||||
IRoleDescriptor,
|
||||
@ -601,4 +606,17 @@ export default class ProjectService {
|
||||
version: 1,
|
||||
};
|
||||
}
|
||||
|
||||
async getChangeRequestConfig(
|
||||
projectId: string,
|
||||
): Promise<IProjectEnvironmentConfig[]> {
|
||||
return this.store.getChangeRequestConfigForProject(projectId);
|
||||
}
|
||||
|
||||
async updateEnvironmentConfig(
|
||||
projectId: string,
|
||||
data: IUpdateProjectEnvironmentConfig,
|
||||
): Promise<void> {
|
||||
await this.store.updateProjectEnvironmentConfig(projectId, data);
|
||||
}
|
||||
}
|
||||
|
@ -347,6 +347,7 @@ export interface IProject {
|
||||
updatedAt?: Date;
|
||||
changeRequestsEnabled?: boolean;
|
||||
}
|
||||
|
||||
export interface ICustomRole {
|
||||
id: number;
|
||||
name: string;
|
||||
|
@ -27,7 +27,13 @@ export interface IProjectQuery {
|
||||
id?: string;
|
||||
}
|
||||
|
||||
export interface IProjectEnvironmentWithChangeRequests {
|
||||
export interface IProjectEnvironmentConfig {
|
||||
environment: string;
|
||||
type: string;
|
||||
changeRequestsEnabled: boolean;
|
||||
}
|
||||
|
||||
export interface IUpdateProjectEnvironmentConfig {
|
||||
environment: string;
|
||||
changeRequestsEnabled: boolean;
|
||||
}
|
||||
@ -50,13 +56,18 @@ export interface IProjectStore extends Store<IProject, string> {
|
||||
getProjectsWithCounts(query?: IProjectQuery): Promise<IProjectWithCount[]>;
|
||||
count(): Promise<number>;
|
||||
getAll(query?: IProjectQuery): Promise<IProject[]>;
|
||||
|
||||
getProjectLinksForEnvironments(
|
||||
environments: string[],
|
||||
): Promise<IEnvironmentProjectLink[]>;
|
||||
|
||||
addEnvironmentToProjects(
|
||||
environment: string,
|
||||
projects: string[],
|
||||
): Promise<void>;
|
||||
getChangeRequestConfigForProject(
|
||||
id: string,
|
||||
): Promise<IProjectEnvironmentConfig[]>;
|
||||
updateProjectEnvironmentConfig(
|
||||
id: string,
|
||||
data: IUpdateProjectEnvironmentConfig,
|
||||
);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user