mirror of
https://github.com/Unleash/unleash.git
synced 2025-07-02 01:17:58 +02:00
Change request approvals table (#2347)
1. Added database table for change request approvals 2. Removed separate endpoint for applying. **Now all state changes will go through same endpoint.**
This commit is contained in:
parent
d998f4c67a
commit
5e14e80ae3
@ -47,7 +47,7 @@ export const ChangeRequestOverview: FC = () => {
|
|||||||
projectId,
|
projectId,
|
||||||
id
|
id
|
||||||
);
|
);
|
||||||
const { applyChanges } = useChangeRequestApi();
|
const { changeState } = useChangeRequestApi();
|
||||||
const { setToastData, setToastApiError } = useToast();
|
const { setToastData, setToastApiError } = useToast();
|
||||||
|
|
||||||
if (!changeRequest) {
|
if (!changeRequest) {
|
||||||
@ -56,7 +56,9 @@ export const ChangeRequestOverview: FC = () => {
|
|||||||
|
|
||||||
const onApplyChanges = async () => {
|
const onApplyChanges = async () => {
|
||||||
try {
|
try {
|
||||||
await applyChanges(projectId, id);
|
await changeState(projectId, Number(id), {
|
||||||
|
state: 'Applied',
|
||||||
|
});
|
||||||
refetchChangeRequest();
|
refetchChangeRequest();
|
||||||
setToastData({
|
setToastData({
|
||||||
type: 'success',
|
type: 'success',
|
||||||
|
@ -51,19 +51,6 @@ export const useChangeRequestApi = () => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const applyChanges = async (project: string, changeRequestId: string) => {
|
|
||||||
const path = `api/admin/projects/${project}/change-requests/${changeRequestId}/apply`;
|
|
||||||
const req = createRequest(path, {
|
|
||||||
method: 'PUT',
|
|
||||||
});
|
|
||||||
try {
|
|
||||||
const response = await makeRequest(req.caller, req.id);
|
|
||||||
return response;
|
|
||||||
} catch (e) {
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const discardChangeRequestEvent = async (
|
const discardChangeRequestEvent = async (
|
||||||
project: string,
|
project: string,
|
||||||
changeRequestId: number,
|
changeRequestId: number,
|
||||||
@ -82,7 +69,6 @@ export const useChangeRequestApi = () => {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
addChangeRequest,
|
addChangeRequest,
|
||||||
applyChanges,
|
|
||||||
changeState,
|
changeState,
|
||||||
discardChangeRequestEvent,
|
discardChangeRequestEvent,
|
||||||
errors,
|
errors,
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
import { IAuthRequest } from '../server-impl';
|
import { IAuthRequest, User } from '../server-impl';
|
||||||
|
|
||||||
|
export function extractUsernameFromUser(user: User): string {
|
||||||
|
return user ? user.email || user.username : 'unknown';
|
||||||
|
}
|
||||||
|
|
||||||
export function extractUsername(req: IAuthRequest): string {
|
export function extractUsername(req: IAuthRequest): string {
|
||||||
return req.user ? req.user.email || req.user.username : 'unknown';
|
return extractUsernameFromUser(req.user);
|
||||||
}
|
}
|
||||||
|
24
src/migrations/20221104123349-change-request-approval.js
Normal file
24
src/migrations/20221104123349-change-request-approval.js
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
exports.up = function (db, callback) {
|
||||||
|
db.runSql(
|
||||||
|
`
|
||||||
|
CREATE TABLE IF NOT EXISTS change_request_approvals (
|
||||||
|
id serial primary key,
|
||||||
|
change_request_id integer NOT NULL REFERENCES change_requests(id) ON DELETE CASCADE,
|
||||||
|
created_by integer not null references users (id) ON DELETE CASCADE,
|
||||||
|
created_at timestamp default now()
|
||||||
|
);
|
||||||
|
`,
|
||||||
|
callback,
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.down = function (db, callback) {
|
||||||
|
db.runSql(
|
||||||
|
`
|
||||||
|
DROP TABLE IF EXISTS change_request_approvals;
|
||||||
|
`,
|
||||||
|
callback,
|
||||||
|
);
|
||||||
|
};
|
Loading…
Reference in New Issue
Block a user