From 4a32fc6180c810bc95a6994c67f5f373320e6db2 Mon Sep 17 00:00:00 2001 From: Andrew Bastin Date: Sun, 21 Nov 2021 20:02:09 +0530 Subject: [PATCH] feat: mutations and queries for shortcode management --- .../helpers/backend/caching/keys.ts | 1 + .../helpers/backend/caching/resolvers.ts | 4 ++++ .../helpers/backend/caching/updates.ts | 15 +++++++++++++++ .../backend/gql/mutations/CreateShortcode.graphql | 6 ++++++ .../backend/gql/queries/ResolveShortcode.graphql | 6 ++++++ .../helpers/backend/mutations/Shortcode.ts | 15 +++++++++++++++ 6 files changed, 47 insertions(+) create mode 100644 packages/hoppscotch-app/helpers/backend/gql/mutations/CreateShortcode.graphql create mode 100644 packages/hoppscotch-app/helpers/backend/gql/queries/ResolveShortcode.graphql create mode 100644 packages/hoppscotch-app/helpers/backend/mutations/Shortcode.ts diff --git a/packages/hoppscotch-app/helpers/backend/caching/keys.ts b/packages/hoppscotch-app/helpers/backend/caching/keys.ts index 53bf8d8fe..5a9aa6d3b 100644 --- a/packages/hoppscotch-app/helpers/backend/caching/keys.ts +++ b/packages/hoppscotch-app/helpers/backend/caching/keys.ts @@ -4,5 +4,6 @@ export const keyDefs: GraphCacheKeysConfig = { User: (data) => data.uid!, TeamMember: (data) => data.membershipID!, Team: (data) => data.id!, + Shortcode: (data) => data.id!, TeamInvitation: (data) => data.id!, } diff --git a/packages/hoppscotch-app/helpers/backend/caching/resolvers.ts b/packages/hoppscotch-app/helpers/backend/caching/resolvers.ts index fc3a74163..ae1c4e41f 100644 --- a/packages/hoppscotch-app/helpers/backend/caching/resolvers.ts +++ b/packages/hoppscotch-app/helpers/backend/caching/resolvers.ts @@ -14,5 +14,9 @@ export const resolversDef: GraphCacheResolvers = { __typename: "TeamInvitation", id: args.inviteID, }), + shortcode: (_parent, args, _cache, _info) => ({ + __typename: "Shortcode", + id: args.code, + }), }, } diff --git a/packages/hoppscotch-app/helpers/backend/caching/updates.ts b/packages/hoppscotch-app/helpers/backend/caching/updates.ts index 3fe725073..64600c4ba 100644 --- a/packages/hoppscotch-app/helpers/backend/caching/updates.ts +++ b/packages/hoppscotch-app/helpers/backend/caching/updates.ts @@ -1,3 +1,4 @@ +import { gql } from "@urql/core" import { GraphCacheUpdaters, MyTeamsDocument } from "../graphql" export const updatesDef: GraphCacheUpdaters = { @@ -168,5 +169,19 @@ export const updatesDef: GraphCacheUpdaters = { ) } }, + createShortcode: (result, _args, cache, _info) => { + cache.writeFragment( + gql` + fragment _ on Shortcode { + id + request + } + `, + { + id: result.createShortcode.id, + request: result.createShortcode.request, + } + ) + }, }, } diff --git a/packages/hoppscotch-app/helpers/backend/gql/mutations/CreateShortcode.graphql b/packages/hoppscotch-app/helpers/backend/gql/mutations/CreateShortcode.graphql new file mode 100644 index 000000000..8d568630f --- /dev/null +++ b/packages/hoppscotch-app/helpers/backend/gql/mutations/CreateShortcode.graphql @@ -0,0 +1,6 @@ +mutation CreateShortcode($request: String!) { + createShortcode(request: $request) { + id + request + } +} \ No newline at end of file diff --git a/packages/hoppscotch-app/helpers/backend/gql/queries/ResolveShortcode.graphql b/packages/hoppscotch-app/helpers/backend/gql/queries/ResolveShortcode.graphql new file mode 100644 index 000000000..3aa7f27b1 --- /dev/null +++ b/packages/hoppscotch-app/helpers/backend/gql/queries/ResolveShortcode.graphql @@ -0,0 +1,6 @@ +query ResolveShortcode($code: ID!) { + shortcode(code: $code) { + id + request + } +} \ No newline at end of file diff --git a/packages/hoppscotch-app/helpers/backend/mutations/Shortcode.ts b/packages/hoppscotch-app/helpers/backend/mutations/Shortcode.ts new file mode 100644 index 000000000..4d76ef79e --- /dev/null +++ b/packages/hoppscotch-app/helpers/backend/mutations/Shortcode.ts @@ -0,0 +1,15 @@ +import { runMutation } from "../GQLClient" +import { + CreateShortcodeDocument, + CreateShortcodeMutation, + CreateShortcodeMutationVariables, +} from "../graphql" +import { HoppRESTRequest } from "~/helpers/types/HoppRESTRequest" + +export const createShortcode = (request: HoppRESTRequest) => + runMutation( + CreateShortcodeDocument, + { + request: JSON.stringify(request), + } + )