Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion api/src/controllers/projects.contentMapper.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,18 @@ const getSingleContentTypes = async (
res.status(201).json(resp);
};

/**
* Retrieves single global field.
*
* @param req - The request object.
* @param res - The response object.
* @returns A Promise that resolves to void.
*/
const getSingleGlobalField = async(req: Request, res: Response): Promise<void> => {
const resp = await contentMapperService.getSingleGlobalField(req);
res.status(201).json(resp);
}

/**
* update content mapping details a project.
*
Expand All @@ -148,5 +160,6 @@ export const contentMapperController = {
getSingleContentTypes,
removeContentMapper,
updateContentMapper,
getExistingGlobalFields
getExistingGlobalFields,
getSingleGlobalField
};
15 changes: 13 additions & 2 deletions api/src/routes/contentMapper.routes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ router.get(
* @route GET /:projectId
*/
router.get(
"/globalFields/:projectId",
"/:projectId/globalFields",
asyncRouter(contentMapperController.getExistingGlobalFields)
);

Expand Down Expand Up @@ -85,7 +85,18 @@ router.get(
asyncRouter(contentMapperController.removeContentMapper)
);

//update content mapper details
/**
* Update content mapper
* @route GET /:orgId/:projectId
*/
router.patch("/:orgId/:projectId/mapper_keys", asyncRouter(contentMapperController.updateContentMapper));

/**
* Get Single Global Field data
* @route GET /:projectId/:globalFieldUid
*/
router.get("/:projectId/globalFields/:globalFieldUid",
asyncRouter(contentMapperController.getSingleGlobalField)
);

export default router;
52 changes: 50 additions & 2 deletions api/src/services/contentMapper.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -863,9 +863,56 @@ const getSingleContentTypes = async (req: Request) => {
return {
title: res?.data?.content_type?.title,
uid: res?.data?.content_type?.uid,
schema: res?.data?.content_type?.schema,
schema: res?.data?.content_type?.schema
};
};

/**
* Retrieves a single global field from the specified project.
* @param req - The request object containing the project ID, content type UID, and token payload.
* @returns An object containing the title, UID, and schema of the content type, or an error object if an error occurs.
*/
const getSingleGlobalField = async (req: Request) => {
const projectId = req?.params?.projectId;
const globalFieldUID = req?.params?.globalFieldUid;
const { token_payload } = req.body;

const authtoken = await getAuthtoken(
token_payload?.region,
token_payload?.user_id
);
await ProjectModelLowdb.read();
const project = ProjectModelLowdb.chain
.get("projects")
.find({ id: projectId })
.value();
const stackId = project?.destination_stack_id;

const [err, res] = await safePromise(
https({
method: "GET",
url: `${config.CS_API[
token_payload?.region as keyof typeof config.CS_API
]!}/global_fields/${globalFieldUID}`,
headers: {
api_key: stackId,
authtoken: authtoken,
},
})
);

if (err)
return {
data: err.response.data,
status: err.response.status,
};

return {
title: res?.data?.global_field?.title,
uid: res?.data?.global_field?.uid,
schema: res?.data?.global_field?.schema
};
}
/**
* Removes the content mapping for a project.
* @param req - The request object containing the project ID.
Expand Down Expand Up @@ -1037,5 +1084,6 @@ export const contentMapperService = {
removeMapping,
getSingleContentTypes,
updateContentMapper,
getExistingGlobalFields
getExistingGlobalFields,
getSingleGlobalField
};
Loading