Add mutations for edit and delete environment variables (#54)
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
This commit is contained in:
parent
e1e9a7063e
commit
c8c6f66ed2
@ -201,6 +201,28 @@ export class Database {
|
|||||||
return savedEnvironmentVariables.length > 0;
|
return savedEnvironmentVariables.length > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async updateEnvironmentVariable (environmentVariableId: string, update: DeepPartial<EnvironmentVariable>): Promise<boolean> {
|
||||||
|
const environmentVariableRepository = this.dataSource.getRepository(EnvironmentVariable);
|
||||||
|
const updateResult = await environmentVariableRepository.update({ id: Number(environmentVariableId) }, update);
|
||||||
|
|
||||||
|
if (updateResult.affected) {
|
||||||
|
return updateResult.affected > 0;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async deleteEnvironmentVariable (environmentVariableId: string): Promise<boolean> {
|
||||||
|
const environmentVariableRepository = this.dataSource.getRepository(EnvironmentVariable);
|
||||||
|
const deleteResult = await environmentVariableRepository.delete({ id: Number(environmentVariableId) });
|
||||||
|
|
||||||
|
if (deleteResult.affected) {
|
||||||
|
return deleteResult.affected > 0;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async getProjectMemberByMemberId (memberId: string): Promise<ProjectMember> {
|
async getProjectMemberByMemberId (memberId: string): Promise<ProjectMember> {
|
||||||
const projectMemberRepository = this.dataSource.getRepository(ProjectMember);
|
const projectMemberRepository = this.dataSource.getRepository(ProjectMember);
|
||||||
|
|
||||||
|
@ -139,6 +139,27 @@ export const createResolvers = async (db: Database, app: OAuthApp): Promise<any>
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
updateEnvironmentVariable: async (_: any, { environmentVariableId, environmentVariable }: { environmentVariableId: string, environmentVariable : {
|
||||||
|
key: string
|
||||||
|
value: string
|
||||||
|
}}) => {
|
||||||
|
try {
|
||||||
|
return db.updateEnvironmentVariable(environmentVariableId, environmentVariable);
|
||||||
|
} catch (err) {
|
||||||
|
log(err);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
removeEnvironmentVariable: async (_: any, { environmentVariableId }: { environmentVariableId: string}) => {
|
||||||
|
try {
|
||||||
|
return db.deleteEnvironmentVariable(environmentVariableId);
|
||||||
|
} catch (err) {
|
||||||
|
log(err);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
updateDeploymentToProd: async (_: any, { deploymentId }: { deploymentId: string }) => {
|
updateDeploymentToProd: async (_: any, { deploymentId }: { deploymentId: string }) => {
|
||||||
try {
|
try {
|
||||||
return db.updateDeploymentById(deploymentId, {
|
return db.updateDeploymentById(deploymentId, {
|
||||||
|
@ -133,6 +133,8 @@ type AuthResult {
|
|||||||
type Mutation {
|
type Mutation {
|
||||||
removeMember(memberId: String!): Boolean!
|
removeMember(memberId: String!): Boolean!
|
||||||
addEnvironmentVariables(projectId: String!, environmentVariables: [AddEnvironmentVariableInput!]): Boolean!
|
addEnvironmentVariables(projectId: String!, environmentVariables: [AddEnvironmentVariableInput!]): Boolean!
|
||||||
|
removeEnvironmentVariable(environmentVariableId: String!): Boolean!
|
||||||
|
updateEnvironmentVariable(environmentVariableId: String!, environmentVariable: UpdateEnvironmentVariableInput!): Boolean!
|
||||||
updateDeploymentToProd(deploymentId: String!): Boolean!
|
updateDeploymentToProd(deploymentId: String!): Boolean!
|
||||||
updateProject(projectId: String!, projectDetails: UpdateProjectInput): Boolean!
|
updateProject(projectId: String!, projectDetails: UpdateProjectInput): Boolean!
|
||||||
redeployToProd(deploymentId: String!): Boolean!
|
redeployToProd(deploymentId: String!): Boolean!
|
||||||
@ -163,3 +165,8 @@ input UpdateDomainInput {
|
|||||||
isRedirected: Boolean
|
isRedirected: Boolean
|
||||||
branch: String
|
branch: String
|
||||||
}
|
}
|
||||||
|
|
||||||
|
input UpdateEnvironmentVariableInput {
|
||||||
|
key: String
|
||||||
|
value: String
|
||||||
|
}
|
||||||
|
@ -12,7 +12,7 @@ interface OverviewProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Check if any live domain is set for production branch
|
// TODO: Check if any live domain is set for production branch
|
||||||
const IS_DOMAIN_SETUP = true;
|
const IS_DOMAIN_SETUP = false;
|
||||||
|
|
||||||
const OverviewTabPanel = ({ project }: OverviewProps) => {
|
const OverviewTabPanel = ({ project }: OverviewProps) => {
|
||||||
return (
|
return (
|
||||||
|
@ -70,7 +70,7 @@ export const EnvironmentVariablesTabPanel = () => {
|
|||||||
}
|
}
|
||||||
}, [isSubmitSuccessful, reset, id]);
|
}, [isSubmitSuccessful, reset, id]);
|
||||||
|
|
||||||
const getEnvironmentVariable = useCallback(
|
const getEnvironmentVariables = useCallback(
|
||||||
(environment: Environment) => {
|
(environment: Environment) => {
|
||||||
return environmentVariables.filter(
|
return environmentVariables.filter(
|
||||||
(item) => item.environment === environment,
|
(item) => item.environment === environment,
|
||||||
@ -226,17 +226,17 @@ export const EnvironmentVariablesTabPanel = () => {
|
|||||||
<div className="p-2">
|
<div className="p-2">
|
||||||
<DisplayEnvironmentVariables
|
<DisplayEnvironmentVariables
|
||||||
environment={Environment.Production}
|
environment={Environment.Production}
|
||||||
variables={getEnvironmentVariable(Environment.Production)}
|
variables={getEnvironmentVariables(Environment.Production)}
|
||||||
/>
|
/>
|
||||||
<HorizontalLine />
|
<HorizontalLine />
|
||||||
<DisplayEnvironmentVariables
|
<DisplayEnvironmentVariables
|
||||||
environment={Environment.Preview}
|
environment={Environment.Preview}
|
||||||
variables={getEnvironmentVariable(Environment.Preview)}
|
variables={getEnvironmentVariables(Environment.Preview)}
|
||||||
/>
|
/>
|
||||||
<HorizontalLine />
|
<HorizontalLine />
|
||||||
<DisplayEnvironmentVariables
|
<DisplayEnvironmentVariables
|
||||||
environment={Environment.Development}
|
environment={Environment.Development}
|
||||||
variables={getEnvironmentVariable(Environment.Development)}
|
variables={getEnvironmentVariables(Environment.Development)}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
|
@ -51,7 +51,6 @@ const ProjectSearch = () => {
|
|||||||
...project,
|
...project,
|
||||||
// TODO: populate empty fields
|
// TODO: populate empty fields
|
||||||
icon: '',
|
icon: '',
|
||||||
title: project.name,
|
|
||||||
organization: orgName,
|
organization: orgName,
|
||||||
deployments: updatedDeployments,
|
deployments: updatedDeployments,
|
||||||
url: '',
|
url: '',
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import { ApolloClient, DefaultOptions, InMemoryCache, NormalizedCacheObject } from '@apollo/client';
|
import { ApolloClient, DefaultOptions, InMemoryCache, NormalizedCacheObject } from '@apollo/client';
|
||||||
|
|
||||||
import { getUser, getOrganizations, getDeployments, getProjectMembers, searchProjects, getEnvironmentVariables, getProject, getDomains, getProjectsInOrganization } from './queries';
|
import { getUser, getOrganizations, getDeployments, getProjectMembers, searchProjects, getEnvironmentVariables, getProject, getDomains, getProjectsInOrganization } from './queries';
|
||||||
import { AddEnvironmentVariableInput, AddEnvironmentVariablesResponse, GetDeploymentsResponse, GetEnvironmentVariablesResponse, GetOrganizationsResponse, GetProjectMembersResponse, SearchProjectsResponse, GetUserResponse, RemoveMemberResponse, UpdateDeploymentToProdResponse, GetProjectResponse, UpdateProjectResponse, UpdateProjectInput, RedeployToProdResponse, DeleteProjectResponse, GetProjectsInOrganizationResponse, RollbackDeploymentResponse, AddDomainInput, AddDomainResponse, GetDomainsResponse, UpdateDomainInput, UpdateDomainResponse, AuthenticateGithubResponse } from './types';
|
import { AddEnvironmentVariableInput, AddEnvironmentVariablesResponse, GetDeploymentsResponse, GetEnvironmentVariablesResponse, GetOrganizationsResponse, GetProjectMembersResponse, SearchProjectsResponse, GetUserResponse, RemoveMemberResponse, UpdateDeploymentToProdResponse, GetProjectResponse, UpdateProjectResponse, UpdateProjectInput, RedeployToProdResponse, DeleteProjectResponse, GetProjectsInOrganizationResponse, RollbackDeploymentResponse, AddDomainInput, AddDomainResponse, GetDomainsResponse, UpdateDomainInput, UpdateDomainResponse, AuthenticateGithubResponse, UpdateEnvironmentVariableResponse, UpdateEnvironmentVariableInput, RemoveEnvironmentVariableResponse } from './types';
|
||||||
import { removeMember, addEnvironmentVariables, updateDeploymentToProd, updateProjectMutation, redeployToProd, deleteProject, addDomain, rollbackDeployment, updateDomainMutation, authenticateGithub } from './mutations';
|
import { removeMember, addEnvironmentVariables, updateDeploymentToProd, updateProjectMutation, redeployToProd, deleteProject, addDomain, rollbackDeployment, updateDomainMutation, authenticateGithub, updateEnvironmentVariable, removeEnvironmentVariable } from './mutations';
|
||||||
|
|
||||||
export interface GraphQLConfig {
|
export interface GraphQLConfig {
|
||||||
gqlEndpoint: string;
|
gqlEndpoint: string;
|
||||||
@ -136,6 +136,29 @@ export class GQLClient {
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async updateEnvironmentVariable (environmentVariableId: string, environmentVariable: UpdateEnvironmentVariableInput): Promise<UpdateEnvironmentVariableResponse> {
|
||||||
|
const { data } = await this.client.mutate({
|
||||||
|
mutation: updateEnvironmentVariable,
|
||||||
|
variables: {
|
||||||
|
environmentVariableId,
|
||||||
|
environmentVariable
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
async removeEnvironmentVariable (environmentVariableId: string): Promise<RemoveEnvironmentVariableResponse> {
|
||||||
|
const { data } = await this.client.mutate({
|
||||||
|
mutation: removeEnvironmentVariable,
|
||||||
|
variables: {
|
||||||
|
environmentVariableId
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
async updateDeploymentToProd (deploymentId: string): Promise<UpdateDeploymentToProdResponse> {
|
async updateDeploymentToProd (deploymentId: string): Promise<UpdateDeploymentToProdResponse> {
|
||||||
const { data } = await this.client.mutate({
|
const { data } = await this.client.mutate({
|
||||||
mutation: updateDeploymentToProd,
|
mutation: updateDeploymentToProd,
|
||||||
|
@ -12,6 +12,18 @@ mutation ($projectId: String!, $environmentVariables: [AddEnvironmentVariableInp
|
|||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
export const updateEnvironmentVariable = gql`
|
||||||
|
mutation ($environmentVariableId: String!, $environmentVariable: UpdateEnvironmentVariableInput!) {
|
||||||
|
updateEnvironmentVariable(environmentVariableId: $environmentVariableId, environmentVariable: $environmentVariable)
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
export const removeEnvironmentVariable = gql`
|
||||||
|
mutation ($environmentVariableId: String!) {
|
||||||
|
removeEnvironmentVariable(environmentVariableId: $environmentVariableId)
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
export const updateDeploymentToProd = gql`
|
export const updateDeploymentToProd = gql`
|
||||||
mutation ($deploymentId: String!) {
|
mutation ($deploymentId: String!) {
|
||||||
updateDeploymentToProd(deploymentId: $deploymentId)
|
updateDeploymentToProd(deploymentId: $deploymentId)
|
||||||
|
@ -180,6 +180,19 @@ export type AddEnvironmentVariableInput = {
|
|||||||
value: string;
|
value: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type UpdateEnvironmentVariableInput = {
|
||||||
|
key: string;
|
||||||
|
value: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type UpdateEnvironmentVariableResponse = {
|
||||||
|
updateEnvironmentVariable: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type RemoveEnvironmentVariableResponse = {
|
||||||
|
removeEnvironmentVariable: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
export type UpdateDeploymentToProdResponse = {
|
export type UpdateDeploymentToProdResponse = {
|
||||||
updateDeploymentToProd: boolean;
|
updateDeploymentToProd: boolean;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user