Path: blob/main/components/dashboard/src/data/organizations/org-envvar-queries.ts
2501 views
/**1* Copyright (c) 2025 Gitpod GmbH. All rights reserved.2* Licensed under the GNU Affero General Public License (AGPL).3* See License.AGPL.txt in the project root for license information.4*/56import { OrganizationEnvironmentVariable } from "@gitpod/public-api/lib/gitpod/v1/envvar_pb";7import { envVarClient } from "../../service/public-api";8import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";910const getListOrgEnvVarQueryKey = (orgId: string) => {11const key: any[] = ["organization", orgId, "envvar", "list"];1213return key;14};1516const getOrgEnvVarQueryKey = (orgId: string, variableId: string) => {17const key: any[] = ["organization", orgId, "envvar", { variableId }];1819return key;20};2122export const useListOrganizationEnvironmentVariables = (orgId: string) => {23return useQuery<OrganizationEnvironmentVariable[]>(getListOrgEnvVarQueryKey(orgId), {24queryFn: async () => {25const { environmentVariables } = await envVarClient.listOrganizationEnvironmentVariables({26organizationId: orgId,27});2829return environmentVariables;30},31cacheTime: 1000 * 60 * 60 * 24, // one day32});33};3435type DeleteEnvironmentVariableArgs = {36variableId: string;37organizationId: string;38};39export const useDeleteOrganizationEnvironmentVariable = () => {40const queryClient = useQueryClient();4142return useMutation<void, Error, DeleteEnvironmentVariableArgs>({43mutationFn: async ({ variableId }) => {44void (await envVarClient.deleteOrganizationEnvironmentVariable({45environmentVariableId: variableId,46}));47},48onSuccess: (_, { organizationId, variableId }) => {49queryClient.invalidateQueries({ queryKey: getListOrgEnvVarQueryKey(organizationId) });50queryClient.invalidateQueries({ queryKey: getOrgEnvVarQueryKey(organizationId, variableId) });51},52});53};5455type CreateEnvironmentVariableArgs = {56organizationId: string;57name: string;58value: string;59};60export const useCreateOrganizationEnvironmentVariable = () => {61const queryClient = useQueryClient();6263return useMutation<OrganizationEnvironmentVariable, Error, CreateEnvironmentVariableArgs>({64mutationFn: async ({ organizationId, name, value }) => {65const { environmentVariable } = await envVarClient.createOrganizationEnvironmentVariable({66organizationId,67name,68value,69});70if (!environmentVariable) {71throw new Error("Failed to create environment variable");72}7374return environmentVariable;75},76onSuccess: (_, { organizationId }) => {77queryClient.invalidateQueries({ queryKey: getListOrgEnvVarQueryKey(organizationId) });78},79});80};8182type UpdateEnvironmentVariableArgs = CreateEnvironmentVariableArgs & {83variableId: string;84};85export const useUpdateOrganizationEnvironmentVariable = () => {86const queryClient = useQueryClient();8788return useMutation<OrganizationEnvironmentVariable, Error, UpdateEnvironmentVariableArgs>({89mutationFn: async ({ variableId, name, value, organizationId }: UpdateEnvironmentVariableArgs) => {90const { environmentVariable } = await envVarClient.updateOrganizationEnvironmentVariable({91environmentVariableId: variableId,92organizationId,93name,94value,95});96if (!environmentVariable) {97throw new Error("Failed to update environment variable");98}99100return environmentVariable;101},102onSuccess: (_, { organizationId, variableId }) => {103queryClient.invalidateQueries({ queryKey: getListOrgEnvVarQueryKey(organizationId) });104queryClient.invalidateQueries({ queryKey: getOrgEnvVarQueryKey(organizationId, variableId) });105},106});107};108109110