console: add response_transform in update_action api call

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6223
Co-authored-by: Daniele Cammareri <5709409+dancamma@users.noreply.github.com>
GitOrigin-RevId: 6687188c3fe1dc025273aa8f3bb0bac20b605a7d
This commit is contained in:
Varun Choudhary 2022-10-06 16:33:03 +05:30 committed by hasura-bot
parent 8fb1c1f344
commit bb5c1ad4d0
7 changed files with 43 additions and 15 deletions

View File

@ -159,6 +159,12 @@ export type RequestTransformState = {
templatingEngine: RequestTransformTemplateEngine;
};
export type ResponseTransformState = {
version: 1 | 2;
requestBody: RequestTransformStateBody;
templatingEngine: RequestTransformTemplateEngine;
};
export type RequestTransformStateBody = Omit<
RequestTransformBody,
'form_template'

View File

@ -2,6 +2,7 @@ import {
RequestTransform,
RequestTransformBody,
RequestTransformMethod,
ResponseTranform,
} from '@/metadata/types';
import { getLSItem, setLSItem, LS_KEYS } from '@/utils/localStorage';
import {
@ -10,6 +11,7 @@ import {
KeyValuePair,
RequestTransformState,
RequestTransformStateBody,
ResponseTransformState,
} from './stateDefaults';
import { isEmpty, isJsonString } from '../utils/jsUtils';
import { Nullable } from '../utils/tsUtils';
@ -174,6 +176,14 @@ export const getRequestTransformObject = (
return obj;
};
export const getResponseTransformObject = (
transformState: ResponseTransformState
): ResponseTranform => ({
version: 2,
body: getTransformBodyServer(transformState.requestBody),
template_engine: transformState.templatingEngine,
});
const getErrorFromCode = (data: Record<string, any>) => {
const errorCode = data.code ? data.code : '';
const errorMsg = data.error ? data.error : '';

View File

@ -37,7 +37,8 @@ export const generateActionDefinition = (
forwardClientHeaders,
timeout,
},
requestTransform
requestTransform,
responseTransform
) => {
return {
arguments: filterNameLessTypeLess(args),
@ -49,6 +50,7 @@ export const generateActionDefinition = (
forward_client_headers: forwardClientHeaders,
timeout,
request_transform: requestTransform ?? null,
response_transform: responseTransform ?? null,
};
};

View File

@ -16,6 +16,7 @@ const state = {
forwardClientHeaders: false,
timeout: '',
comment: '',
response_transfrom: {},
};
export default state;

View File

@ -36,6 +36,7 @@ export const getModifyState = (currentAction, allTypes) => {
forwardClientHeaders: actionDef.forward_client_headers,
timeout: actionDef?.timeout ?? '',
comment: currentAction.comment,
response_transfrom: actionDef?.response_transfrom ?? {},
};
return modifyState;
};

View File

@ -59,7 +59,10 @@ import {
persistDerivedAction,
updatePersistedDerivation,
} from './utils';
import { getRequestTransformObject } from '../../Common/ConfigureTransformation/utils';
import {
getRequestTransformObject,
getResponseTransformObject,
} from '../../Common/ConfigureTransformation/utils';
export const createAction = transformState => (dispatch, getState) => {
const { add: rawState } = getState().actions;
@ -238,7 +241,7 @@ export const saveAction =
};
const requestTransform = getRequestTransformObject(transformState);
const responseTransform = getResponseTransformObject(transformState);
const validationError = getStateValidationError(state);
if (validationError) {
@ -267,18 +270,11 @@ export const saveAction =
const dropCurrentActionQuery = generateDropActionQuery(currentAction.name);
const updateCurrentActionQuery = requestTransform
? getUpdateActionQuery(
generateActionDefinition(state, requestTransform),
currentAction.name,
actionComment
)
: getUpdateActionQuery(
generateActionDefinition(state),
currentAction.name,
actionComment
);
const updateCurrentActionQuery = getUpdateActionQuery(
generateActionDefinition(state, requestTransform, responseTransform),
currentAction.name,
actionComment
);
const rollbackActionQuery = getUpdateActionQuery(
currentAction.definition,
currentAction.name,

View File

@ -933,6 +933,11 @@ export type RequestTransformBody = {
form_template?: Record<string, string>;
};
export type ResponseTransformBody = {
action: RequestTransformBodyActions;
template?: string;
};
export type RequestTransformHeaders = {
add_headers?: Record<string, string>;
remove_headers?: string[];
@ -964,6 +969,12 @@ interface RequestTransformV2 extends RequestTransformFields {
export type RequestTransform = RequestTransformV1 | RequestTransformV2;
export type ResponseTranform = {
version: 2;
body?: ResponseTransformBody;
template_engine?: Nullable<RequestTransformTemplateEngine>;
};
/**
* https://hasura.io/docs/latest/graphql/core/api-reference/schema-metadata-api/actions.html#actiondefinition
*/
@ -976,6 +987,7 @@ export interface ActionDefinition {
handler: WebhookURL;
type?: 'mutation' | 'query';
transform?: RequestTransform;
responseTransform?: ResponseTranform;
}
/**