api-client/packages/hoppscotch-common/src/platform/backend.ts

72 lines
2.1 KiB
TypeScript

import { HoppRESTRequest } from "@hoppscotch/data"
import * as TE from "fp-ts/TaskEither"
import * as E from "fp-ts/lib/Either"
import { GQLError } from "~/helpers/backend/GQLClient"
import {
CreateShortcodeMutation,
GetInviteDetailsQuery,
GetInviteDetailsQueryVariables,
GetMyTeamsQuery,
GetUserShortcodesQuery,
TeamMemberRole,
} from "~/helpers/backend/graphql"
import { useGQLQuery } from "~/composables/graphql"
import { Email } from "~/helpers/backend/types/Email"
import { TeamName } from "~/helpers/backend/types/TeamName"
import {
AcceptTeamInvitationMutation,
CreateTeamInvitationMutation,
CreateTeamMutation,
} from "../helpers/backend/graphql"
export type BackendPlatformDef = {
// Read actions via GQL queries
getInviteDetails: <GetInviteDetailsError extends string>(
inviteID: string
) => ReturnType<
typeof useGQLQuery<
GetInviteDetailsQuery,
GetInviteDetailsQueryVariables,
GetInviteDetailsError
>
>
getUserShortcodes: (
cursor?: string
) => Promise<E.Either<GQLError<"">, GetUserShortcodesQuery>>
// Sample use case for `matchAllTeams` would be at the cloud platform level where the list of teams across instances is fetched
// and not limited to a single instance.
getUserTeams: (
cursor?: string,
matchAllTeams?: boolean
) => Promise<E.Either<GQLError<"">, GetMyTeamsQuery>>
// Write actions via GQL mutations
createTeam: <CreateTeamErrors extends string>(
name: TeamName
) => TE.TaskEither<GQLError<CreateTeamErrors>, CreateTeamMutation>
createTeamInvitation: <CreateTeamInvitationErrors extends string>(
inviteeEmail: Email,
inviteeRole: TeamMemberRole,
teamID: string
) => TE.TaskEither<
GQLError<CreateTeamInvitationErrors>,
CreateTeamInvitationMutation
>
acceptTeamInvitation: <AcceptTeamInvitationErrors extends string>(
inviteID: string
) => TE.TaskEither<
GQLError<AcceptTeamInvitationErrors>,
AcceptTeamInvitationMutation
>
createShortcode: (
request: HoppRESTRequest,
properties?: string
) => TE.TaskEither<GQLError<string>, CreateShortcodeMutation>
}