mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-15 02:51:51 +00:00
Merge pull request #3738 from Infisical/gcp-sync-location
feature(gcp-sync): Add support for syncing to locations
This commit is contained in:
@@ -3,12 +3,14 @@ import { useQuery, UseQueryOptions } from "@tanstack/react-query";
|
||||
import { apiRequest } from "@app/config/request";
|
||||
|
||||
import { appConnectionKeys } from "../queries";
|
||||
import { TGcpProject } from "./types";
|
||||
import { TGcpLocation, TGcpProject, TListProjectLocations } from "./types";
|
||||
|
||||
const gcpConnectionKeys = {
|
||||
all: [...appConnectionKeys.all, "gcp"] as const,
|
||||
listProjects: (connectionId: string) =>
|
||||
[...gcpConnectionKeys.all, "projects", connectionId] as const
|
||||
[...gcpConnectionKeys.all, "projects", connectionId] as const,
|
||||
listProjectLocations: ({ projectId, connectionId }: TListProjectLocations) =>
|
||||
[...gcpConnectionKeys.all, "project-locations", connectionId, projectId] as const
|
||||
};
|
||||
|
||||
export const useGcpConnectionListProjects = (
|
||||
@@ -35,3 +37,29 @@ export const useGcpConnectionListProjects = (
|
||||
...options
|
||||
});
|
||||
};
|
||||
|
||||
export const useGcpConnectionListProjectLocations = (
|
||||
{ connectionId, projectId }: TListProjectLocations,
|
||||
options?: Omit<
|
||||
UseQueryOptions<
|
||||
TGcpLocation[],
|
||||
unknown,
|
||||
TGcpLocation[],
|
||||
ReturnType<typeof gcpConnectionKeys.listProjectLocations>
|
||||
>,
|
||||
"queryKey" | "queryFn"
|
||||
>
|
||||
) => {
|
||||
return useQuery({
|
||||
queryKey: gcpConnectionKeys.listProjectLocations({ connectionId, projectId }),
|
||||
queryFn: async () => {
|
||||
const { data } = await apiRequest.get<TGcpLocation[]>(
|
||||
`/api/v1/app-connections/gcp/${connectionId}/secret-manager-project-locations`,
|
||||
{ params: { projectId } }
|
||||
);
|
||||
|
||||
return data;
|
||||
},
|
||||
...options
|
||||
});
|
||||
};
|
||||
|
||||
@@ -2,3 +2,13 @@ export type TGcpProject = {
|
||||
id: string;
|
||||
name: string;
|
||||
};
|
||||
|
||||
export type TListProjectLocations = {
|
||||
connectionId: string;
|
||||
projectId: string;
|
||||
};
|
||||
|
||||
export type TGcpLocation = {
|
||||
displayName: string;
|
||||
locationId: string;
|
||||
};
|
||||
|
||||
@@ -3,15 +3,22 @@ import { SecretSync } from "@app/hooks/api/secretSyncs";
|
||||
import { TRootSecretSync } from "@app/hooks/api/secretSyncs/types/root-sync";
|
||||
|
||||
export enum GcpSyncScope {
|
||||
Global = "global"
|
||||
Global = "global",
|
||||
Region = "region"
|
||||
}
|
||||
|
||||
export type TGcpSync = TRootSecretSync & {
|
||||
destination: SecretSync.GCPSecretManager;
|
||||
destinationConfig: {
|
||||
scope: GcpSyncScope.Global;
|
||||
projectId: string;
|
||||
};
|
||||
destinationConfig:
|
||||
| {
|
||||
scope: GcpSyncScope.Global;
|
||||
projectId: string;
|
||||
}
|
||||
| {
|
||||
scope: GcpSyncScope.Region;
|
||||
projectId: string;
|
||||
locationId: string;
|
||||
};
|
||||
connection: {
|
||||
app: AppConnection.GCP;
|
||||
name: string;
|
||||
|
||||
Reference in New Issue
Block a user