Files
infisical/frontend/src/ee/api/secrets/GetProjectLogs.ts
T

77 lines
1.9 KiB
TypeScript

import SecurityClient from "@app/components/utilities/SecurityClient";
interface WorkspaceProps {
workspaceId: string;
offset: number;
limit: number;
userId: string;
actionNames: string;
}
/**
* This function fetches the activity logs for a certain project
* @param {object} obj
* @param {string} obj.workspaceId - workspace id for which we are trying to get project log
* @param {object} obj.offset - teh starting point of logs that we want to pull
* @param {object} obj.limit - how many logs will we output
* @param {object} obj.userId - optional userId filter - will only query logs for that user
* @param {string} obj.actionNames - optional actionNames filter - will only query logs for those actions
* @returns
*/
const getProjectLogs = async ({
workspaceId,
offset,
limit,
userId,
actionNames
}: WorkspaceProps) => {
let payload;
if (userId !== "" && actionNames !== "") {
payload = {
offset: String(offset),
limit: String(limit),
sortBy: "recent",
userId: JSON.stringify(userId),
actionNames
};
} else if (userId !== "") {
payload = {
offset: String(offset),
limit: String(limit),
sortBy: "recent",
userId: JSON.stringify(userId)
};
} else if (actionNames !== "") {
payload = {
offset: String(offset),
limit: String(limit),
sortBy: "recent",
actionNames
};
} else {
payload = {
offset: String(offset),
limit: String(limit),
sortBy: "recent"
};
}
return SecurityClient.fetchCall(
`/api/v1/workspace/${workspaceId}/logs?${new URLSearchParams(payload)}`,
{
method: "GET",
headers: {
"Content-Type": "application/json"
}
}
).then(async (res) => {
if (res && res.status === 200) {
return (await res.json()).logs;
}
console.log("Failed to get project logs");
return undefined;
});
};
export default getProjectLogs;