Skip to content

Commit

Permalink
chore: migrate to nuxt-graphql-server package (#1602)
Browse files Browse the repository at this point in the history
  • Loading branch information
tobiasdiez authored Nov 11, 2022
1 parent bb4f8e1 commit 9ab40a4
Show file tree
Hide file tree
Showing 15 changed files with 294 additions and 107 deletions.
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,6 @@ storybook-static/
# End of https://www.toptal.com/developers/gitignore/api/vscode,nuxtjs,node

# Automatically generated files
server/graphql.ts
apollo/gql.ts
apollo/graphql.ts
apollo/index.ts
Expand Down
21 changes: 0 additions & 21 deletions graphql.config.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,27 +12,6 @@
"codegen": {
"overwrite": true,
"generates": {
"server/graphql.ts": {
"config": {
"mapperTypeSuffix": "Model",
"contextType": "./context#Context",
"mappers": {
"User": "@prisma/client/index.d#User",
"Document": "./documents/user.document.service#UserDocument",
"JournalArticle": "./documents/user.document.service#UserDocument",
"ProceedingsArticle": "./documents/user.document.service#UserDocument",
"Thesis": "./documents/user.document.service#UserDocument",
"Other": "./documents/user.document.service#UserDocument",
"Group": "./groups/resolvers#GroupMaybeResolved"
},
"scalars": {
"Date": "string",
"DateTime": "Date",
"EmailAddress": "string"
}
},
"plugins": ["typescript", "typescript-resolvers"]
},
"apollo": {
"preset": "gql-tag-operations-preset",
"presetConfig": {
Expand Down
37 changes: 0 additions & 37 deletions modules/graphql.mjs

This file was deleted.

34 changes: 27 additions & 7 deletions nuxt.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,20 +69,15 @@ export default defineNuxtConfig({
'@pinia/nuxt',
// Add storybook support
'./modules/storybook',
// Add graphql support
'./modules/graphql',
// Add server-side graphql support
'nuxt-graphql-server',
// Add vue runtime compiler as temporary workaround for https://github.com/nuxt/framework/issues/4661
'nuxt3-runtime-compiler-module',
// Add support for writing content in markdown
// https://content.nuxtjs.org/
'@nuxt/content',
],

/*
** Restarts the server when dependencies change.
*/
watch: ['server/**/*.graphql'],

/*
** Client and server-side configuration
** See https://v3.nuxtjs.org/guide/features/runtime-config
Expand Down Expand Up @@ -114,6 +109,31 @@ export default defineNuxtConfig({
exposeConfig: true,
},

/**
* GraphQL server config
* See https://github.com/tobiasdiez/nuxt-graphql-server
*/
graphqlServer: {
codegen: {
mapperTypeSuffix: 'Model',
contextType: './context#Context',
mappers: {
User: '@prisma/client/index.d#User',
Document: './documents/user.document.service#UserDocument',
JournalArticle: './documents/user.document.service#UserDocument',
ProceedingsArticle: './documents/user.document.service#UserDocument',
Thesis: './documents/user.document.service#UserDocument',
Other: './documents/user.document.service#UserDocument',
Group: './groups/resolvers#GroupMaybeResolved',
},
scalars: {
Date: 'string',
DateTime: 'Date',
EmailAddress: 'string',
},
},
},

content: {
markdown: {
// Don't automatically print h2-h4 headings as links
Expand Down
3 changes: 1 addition & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,7 @@
"@graphql-codegen/fragment-matcher": "^3.3.1",
"@graphql-codegen/gql-tag-operations-preset": "^1.7.0",
"@graphql-codegen/typed-document-node": "^2.3.6",
"@graphql-codegen/typescript": "^2.8.1",
"@graphql-codegen/typescript-operations": "^2.5.6",
"@graphql-codegen/typescript-resolvers": "^2.7.6",
"@graphql-eslint/eslint-plugin": "^3.13.0",
"@graphql-inspector/cli": "^3.4.0",
"@graphql-typed-document-node/core": "^3.1.1",
Expand Down Expand Up @@ -140,6 +138,7 @@
"mount-vue-component": "^0.10.2",
"naive-ui": "^2.33.5",
"nuxt": "rc",
"nuxt-graphql-server": "1.1.3",
"nuxt3-runtime-compiler-module": "^1.0.4",
"patch-package": "^6.5.0",
"postinstall-postinstall": "^2.1.0",
Expand Down
8 changes: 4 additions & 4 deletions server/documents/resolvers.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
import { DocumentType } from '@prisma/client'
import { notEmpty } from '~/composables/util'
import { Context } from '../context'
import {
AddJournalArticleInput,
AddProceedingsArticleInput,
Expand All @@ -16,7 +13,10 @@ import {
QueryUserDocumentArgs,
Resolvers,
UpdateUserDocumentInput,
} from '../graphql'
} from '#graphql/resolver'
import { DocumentType } from '@prisma/client'
import { notEmpty } from '~/composables/util'
import { Context } from '../context'
import { ResolveType } from '../utils/extractResolveType'
import { inject, injectable, resolve } from './../tsyringe'
import {
Expand Down
12 changes: 6 additions & 6 deletions server/documents/user.document.service.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
import {
AddPersonInput,
DocumentFilters,
UserChangesCursorInput,
UserDocumentsConnection,
} from '#graphql/resolver'
import {
ContributorRole,
DocumentContributor,
Expand All @@ -11,12 +17,6 @@ import {
UserDocument as PlainUserDocument,
UserDocumentOtherField,
} from '@prisma/client'
import {
AddPersonInput,
DocumentFilters,
UserChangesCursorInput,
UserDocumentsConnection,
} from '../graphql'
import { unsecureHash } from '../utils/crypto'
import { inject, injectable } from './../tsyringe'

Expand Down
12 changes: 6 additions & 6 deletions server/groups/resolvers.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
import {
MutationCreateGroupArgs,
MutationUpdateGroupArgs,
QueryGroupArgs,
Resolvers,
} from '#graphql/resolver'
import { ApolloServerErrorCode } from '@apollo/server/errors'
import type { Group, GroupType as GroupTypeT } from '@prisma/client'
// eslint-disable-next-line import/default
import prisma from '@prisma/client'
import { GraphQLError } from 'graphql'
import { Context } from '~/server/context'
import {
MutationCreateGroupArgs,
MutationUpdateGroupArgs,
QueryGroupArgs,
Resolvers,
} from '../graphql'
import { inject, injectable, resolve } from './../tsyringe'
import { GroupService } from './service'
const { GroupType, GroupHierarchyType } = prisma
Expand Down
2 changes: 1 addition & 1 deletion server/resolvers.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Resolvers } from '#graphql/resolver'
import { mergeResolvers } from '@graphql-tools/merge'
import { DateTimeResolver, EmailAddressResolver } from 'graphql-scalars'
import { resolvers as documentResolvers } from './documents/resolvers'
import { Resolvers } from './graphql'
import { resolvers as groupResolvers } from './groups/resolvers'
import { resolvers as userResolvers } from './user/resolvers'

Expand Down
9 changes: 5 additions & 4 deletions server/schema.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
import { GraphQLFileLoader } from '@graphql-tools/graphql-file-loader'
import { loadSchema as loadGraphqlSchema } from '@graphql-tools/load'
import { addResolversToSchema } from '@graphql-tools/schema'
import { makeExecutableSchema } from '@graphql-tools/schema'
import { TypeSource } from '@graphql-tools/utils'
import { GraphQLSchema } from 'graphql'

async function addResolvers(schema: GraphQLSchema) {
async function addResolvers(schema: TypeSource) {
const { loadResolvers } = await import('./resolvers')
const resolvers = loadResolvers()

return addResolversToSchema({
schema,
return makeExecutableSchema({
typeDefs: schema,
resolvers,
resolverValidationOptions: {
// Ignore additional methods in our resolver classes (e.g. private fields)
Expand Down
2 changes: 1 addition & 1 deletion server/user/auth.service.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { PrismaClient, User } from '@prisma/client'

import { ResolversTypes } from '#graphql/resolver'
import { v4 as generateToken } from 'uuid'
import { ResolversTypes } from '../graphql'
import { hash, verifyHash } from '../utils/crypto'
import { resetPasswordTemplate } from '../utils/resetPasswordTemplate'
import { sendEmail } from '../utils/sendEmail'
Expand Down
18 changes: 9 additions & 9 deletions server/user/resolvers.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,3 @@
import { User } from '@prisma/client'
import { LoginInputSchema, SignupInputSchema } from '~/apollo/validation'
import { Context } from '../context'
import {
UserDocument,
UserDocumentService,
UserDocumentsResult,
} from '../documents/user.document.service'
import {
ForgotPasswordPayload,
MutationChangePasswordArgs,
Expand All @@ -18,7 +10,15 @@ import {
UserChangesConnection,
UserChangesEdge,
UserDocumentsArgs,
} from '../graphql'
} from '#graphql/resolver'
import { User } from '@prisma/client'
import { LoginInputSchema, SignupInputSchema } from '~/apollo/validation'
import { Context } from '../context'
import {
UserDocument,
UserDocumentService,
UserDocumentsResult,
} from '../documents/user.document.service'
import { GroupResolved } from '../groups/resolvers'
import { GroupService } from '../groups/service'
import { validateInput } from '../utils/validation'
Expand Down
2 changes: 1 addition & 1 deletion server/utils/validation.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import { ResolverFn } from '#graphql/resolver'
import { AnyZodObject, TypeOf, ZodType } from 'zod'
import { ResolverFn } from '../graphql'

type MethodDecorator<T> = <S extends T>(
target: any,
Expand Down
4 changes: 0 additions & 4 deletions types/schims-graphql.d.ts

This file was deleted.

Loading

0 comments on commit 9ab40a4

Please sign in to comment.