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 {
|
export interface IEnvironmentPayload {
|
||||||
name: string;
|
name: string;
|
||||||
type: string;
|
type: string;
|
||||||
|
changeRequestsEnabled?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IEnvironmentEditPayload {
|
export interface IEnvironmentEditPayload {
|
||||||
sortOrder: number;
|
sortOrder: number;
|
||||||
type: string;
|
type: string;
|
||||||
|
changeRequestsEnabled?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IEnvironmentClonePayload {
|
export interface IEnvironmentClonePayload {
|
||||||
|
@ -6,8 +6,10 @@ import { IEnvironment, IProject, IProjectWithCount } from '../types/model';
|
|||||||
import {
|
import {
|
||||||
IProjectHealthUpdate,
|
IProjectHealthUpdate,
|
||||||
IProjectInsert,
|
IProjectInsert,
|
||||||
|
IProjectEnvironmentConfig,
|
||||||
IProjectQuery,
|
IProjectQuery,
|
||||||
IProjectStore,
|
IProjectStore,
|
||||||
|
IUpdateProjectEnvironmentConfig,
|
||||||
} from '../types/stores/project-store';
|
} from '../types/stores/project-store';
|
||||||
import { DEFAULT_ENV } from '../util/constants';
|
import { DEFAULT_ENV } from '../util/constants';
|
||||||
import metricsHelper from '../util/metrics-helper';
|
import metricsHelper from '../util/metrics-helper';
|
||||||
@ -223,7 +225,11 @@ class ProjectStore implements IProjectStore {
|
|||||||
environments: string[],
|
environments: string[],
|
||||||
): Promise<IEnvironmentProjectLink[]> {
|
): Promise<IEnvironmentProjectLink[]> {
|
||||||
let rows = await this.db('project_environments')
|
let rows = await this.db('project_environments')
|
||||||
.select(['project_id', 'environment_name'])
|
.select([
|
||||||
|
'project_id',
|
||||||
|
'environment_name',
|
||||||
|
'change_request_enabled',
|
||||||
|
])
|
||||||
.whereIn('environment_name', environments);
|
.whereIn('environment_name', environments);
|
||||||
return rows.map(this.mapLinkRow);
|
return rows.map(this.mapLinkRow);
|
||||||
}
|
}
|
||||||
@ -289,6 +295,43 @@ class ProjectStore implements IProjectStore {
|
|||||||
.pluck('project_environments.environment_name');
|
.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[]> {
|
async getMembersCount(): Promise<IProjectMembersCount[]> {
|
||||||
const members = await this.db
|
const members = await this.db
|
||||||
.select('project')
|
.select('project')
|
||||||
|
@ -30,7 +30,12 @@ import { IEnvironmentStore } from '../types/stores/environment-store';
|
|||||||
import { IFeatureTypeStore } from '../types/stores/feature-type-store';
|
import { IFeatureTypeStore } from '../types/stores/feature-type-store';
|
||||||
import { IFeatureToggleStore } from '../types/stores/feature-toggle-store';
|
import { IFeatureToggleStore } from '../types/stores/feature-toggle-store';
|
||||||
import { IFeatureEnvironmentStore } from '../types/stores/feature-environment-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 {
|
import {
|
||||||
IProjectAccessModel,
|
IProjectAccessModel,
|
||||||
IRoleDescriptor,
|
IRoleDescriptor,
|
||||||
@ -601,4 +606,17 @@ export default class ProjectService {
|
|||||||
version: 1,
|
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;
|
updatedAt?: Date;
|
||||||
changeRequestsEnabled?: boolean;
|
changeRequestsEnabled?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ICustomRole {
|
export interface ICustomRole {
|
||||||
id: number;
|
id: number;
|
||||||
name: string;
|
name: string;
|
||||||
|
@ -27,7 +27,13 @@ export interface IProjectQuery {
|
|||||||
id?: string;
|
id?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IProjectEnvironmentWithChangeRequests {
|
export interface IProjectEnvironmentConfig {
|
||||||
|
environment: string;
|
||||||
|
type: string;
|
||||||
|
changeRequestsEnabled: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IUpdateProjectEnvironmentConfig {
|
||||||
environment: string;
|
environment: string;
|
||||||
changeRequestsEnabled: boolean;
|
changeRequestsEnabled: boolean;
|
||||||
}
|
}
|
||||||
@ -50,13 +56,18 @@ export interface IProjectStore extends Store<IProject, string> {
|
|||||||
getProjectsWithCounts(query?: IProjectQuery): Promise<IProjectWithCount[]>;
|
getProjectsWithCounts(query?: IProjectQuery): Promise<IProjectWithCount[]>;
|
||||||
count(): Promise<number>;
|
count(): Promise<number>;
|
||||||
getAll(query?: IProjectQuery): Promise<IProject[]>;
|
getAll(query?: IProjectQuery): Promise<IProject[]>;
|
||||||
|
|
||||||
getProjectLinksForEnvironments(
|
getProjectLinksForEnvironments(
|
||||||
environments: string[],
|
environments: string[],
|
||||||
): Promise<IEnvironmentProjectLink[]>;
|
): Promise<IEnvironmentProjectLink[]>;
|
||||||
|
|
||||||
addEnvironmentToProjects(
|
addEnvironmentToProjects(
|
||||||
environment: string,
|
environment: string,
|
||||||
projects: string[],
|
projects: string[],
|
||||||
): Promise<void>;
|
): Promise<void>;
|
||||||
|
getChangeRequestConfigForProject(
|
||||||
|
id: string,
|
||||||
|
): Promise<IProjectEnvironmentConfig[]>;
|
||||||
|
updateProjectEnvironmentConfig(
|
||||||
|
id: string,
|
||||||
|
data: IUpdateProjectEnvironmentConfig,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user