mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-15 20:25:43 +00:00
feat(radar): pagination & filtering
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
export {
|
||||
useCreateNewInstallationSession,
|
||||
useExportSecretScanningRisks,
|
||||
useLinkGitAppInstallationWithOrg,
|
||||
useUpdateRiskStatus
|
||||
} from "./mutation";
|
||||
|
||||
@@ -2,7 +2,12 @@ import { useMutation } from "@tanstack/react-query";
|
||||
|
||||
import { apiRequest } from "@app/config/request";
|
||||
|
||||
import { RiskStatus, TGitAppOrg, TSecretScanningGitRisks } from "./types";
|
||||
import {
|
||||
RiskStatus,
|
||||
SecretScanningResolvedStatus,
|
||||
TGitAppOrg,
|
||||
TSecretScanningGitRisks
|
||||
} from "./types";
|
||||
|
||||
export const useCreateNewInstallationSession = () => {
|
||||
return useMutation<{ sessionId: string }, object, { organizationId: string }>({
|
||||
@@ -43,3 +48,31 @@ export const useLinkGitAppInstallationWithOrg = () => {
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
export const useExportSecretScanningRisks = () => {
|
||||
return useMutation<
|
||||
TSecretScanningGitRisks[],
|
||||
object,
|
||||
{
|
||||
orgId: string;
|
||||
filter: {
|
||||
repositoryNames?: string[];
|
||||
resolvedStatus?: SecretScanningResolvedStatus;
|
||||
};
|
||||
}
|
||||
>({
|
||||
mutationFn: async ({ filter, orgId }) => {
|
||||
const params = new URLSearchParams({
|
||||
...(filter.resolvedStatus && { resolvedStatus: filter.resolvedStatus }),
|
||||
...(filter.repositoryNames && { repositoryNames: filter.repositoryNames.join(",") })
|
||||
});
|
||||
|
||||
const { data } = await apiRequest.get<{
|
||||
risks: TSecretScanningGitRisks[];
|
||||
}>(`/api/v1/secret-scanning/organization/${orgId}/risks/export`, {
|
||||
params
|
||||
});
|
||||
return data.risks;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
@@ -2,11 +2,19 @@ import { useQuery } from "@tanstack/react-query";
|
||||
|
||||
import { apiRequest } from "@app/config/request";
|
||||
|
||||
import { TSecretScanningGitRisks } from "./types";
|
||||
import { SecretScanningOrderBy, SecretScanningRiskFilter, TSecretScanningGitRisks } from "./types";
|
||||
|
||||
export const secretScanningQueryKeys = {
|
||||
getInstallationStatus: (orgId: string) => ["secret-scanning-installation-status", { orgId }],
|
||||
getRisksByOrganizatio: (orgId: string) => ["secret-scanning-risks", { orgId }]
|
||||
getRisksByOrganization: (
|
||||
orgId: string,
|
||||
sort: {
|
||||
offset: number;
|
||||
limit: number;
|
||||
orderBy: SecretScanningOrderBy;
|
||||
},
|
||||
filter: SecretScanningRiskFilter
|
||||
) => ["secret-scanning-risks", { orgId, sort, filter }]
|
||||
};
|
||||
|
||||
const fetchSecretScanningInstallationStatus = async (organizationId: string) => {
|
||||
@@ -22,15 +30,43 @@ export const useGetSecretScanningInstallationStatus = (orgId: string) =>
|
||||
queryFn: () => fetchSecretScanningInstallationStatus(orgId)
|
||||
});
|
||||
|
||||
const fetchSecretScanningRisksByOrgId = async (oranizationId: string) => {
|
||||
const { data } = await apiRequest.get<{ risks: TSecretScanningGitRisks[] }>(
|
||||
`/api/v1/secret-scanning/organization/${oranizationId}/risks`
|
||||
);
|
||||
return data.risks;
|
||||
const fetchSecretScanningRisksByOrgId = async (
|
||||
organizationId: string,
|
||||
sort: {
|
||||
offset: number;
|
||||
limit: number;
|
||||
orderBy: SecretScanningOrderBy;
|
||||
},
|
||||
filter: SecretScanningRiskFilter
|
||||
) => {
|
||||
const params = new URLSearchParams({
|
||||
offset: String(sort.offset),
|
||||
limit: String(sort.limit),
|
||||
orderBy: sort.orderBy,
|
||||
...(filter.resolvedStatus && { resolvedStatus: filter.resolvedStatus }),
|
||||
...(filter.repositoryNames && { repositoryNames: filter.repositoryNames.join(",") })
|
||||
});
|
||||
|
||||
const { data } = await apiRequest.get<{
|
||||
risks: TSecretScanningGitRisks[];
|
||||
totalCount: number;
|
||||
repos: string[];
|
||||
}>(`/api/v1/secret-scanning/organization/${organizationId}/risks`, {
|
||||
params
|
||||
});
|
||||
return data;
|
||||
};
|
||||
|
||||
export const useGetSecretScanningRisks = (orgId: string) =>
|
||||
export const useGetSecretScanningRisks = (
|
||||
orgId: string,
|
||||
sort: {
|
||||
offset: number;
|
||||
limit: number;
|
||||
orderBy: SecretScanningOrderBy;
|
||||
},
|
||||
filter: SecretScanningRiskFilter
|
||||
) =>
|
||||
useQuery({
|
||||
queryKey: secretScanningQueryKeys.getRisksByOrganizatio(orgId),
|
||||
queryFn: () => fetchSecretScanningRisksByOrgId(orgId)
|
||||
queryKey: secretScanningQueryKeys.getRisksByOrganization(orgId, sort, filter),
|
||||
queryFn: () => fetchSecretScanningRisksByOrgId(orgId, sort, filter)
|
||||
});
|
||||
|
||||
@@ -5,6 +5,21 @@ export enum RiskStatus {
|
||||
UNRESOLVED = "UNRESOLVED"
|
||||
}
|
||||
|
||||
export enum SecretScanningOrderBy {
|
||||
CreatedAt = "createdAt"
|
||||
}
|
||||
|
||||
export enum SecretScanningResolvedStatus {
|
||||
All = "all",
|
||||
Resolved = "resolved",
|
||||
Unresolved = "unresolved"
|
||||
}
|
||||
|
||||
export type SecretScanningRiskFilter = {
|
||||
repositoryNames?: string[];
|
||||
resolvedStatus?: SecretScanningResolvedStatus;
|
||||
};
|
||||
|
||||
export type TSecretScanningGitRisks = {
|
||||
id: string;
|
||||
description: string;
|
||||
|
||||
Reference in New Issue
Block a user