Files
payloadcms/test/custom-graphql/config.ts
2024-07-11 15:27:01 -04:00

72 lines
1.8 KiB
TypeScript

import { GraphQLJSON } from '@payloadcms/graphql/types'
import { fileURLToPath } from 'node:url'
import path from 'path'
const filename = fileURLToPath(import.meta.url)
const dirname = path.dirname(filename)
import { commitTransaction, initTransaction, killTransaction } from 'payload'
import { buildConfigWithDefaults } from '../buildConfigWithDefaults.js'
import { devUser } from '../credentials.js'
const resolveTransactionId = async (_obj, _args, context) => {
try {
const shouldCommit = await initTransaction(context.req)
const transactionID = context.req.transactionID
if (shouldCommit) {
await commitTransaction(context.req)
}
return transactionID ? String(transactionID) : null
} catch (e) {
await killTransaction(context.req)
throw e
}
}
export default buildConfigWithDefaults({
collections: [],
globals: [],
graphQL: {
mutations: (GraphQL) => {
return {
MutateTransactionID1: {
type: GraphQL.GraphQLString,
resolve: resolveTransactionId,
},
MutateTransactionID2: {
type: GraphQL.GraphQLString,
resolve: resolveTransactionId,
},
}
},
queries: (GraphQL) => {
return {
TransactionID1: {
type: GraphQL.GraphQLString,
resolve: resolveTransactionId,
},
TransactionID2: {
type: GraphQL.GraphQLString,
resolve: resolveTransactionId,
},
foo: {
type: GraphQLJSON,
args: {},
resolve: () => 'json test',
},
}
},
},
onInit: async (payload) => {
await payload.create({
collection: 'users',
data: {
email: devUser.email,
password: devUser.password,
},
})
},
typescript: {
outputFile: path.resolve(dirname, 'payload-types.ts'),
},
})