diff --git a/src/index.js b/src/index.js index 66494bb49..4f39b5f0a 100644 --- a/src/index.js +++ b/src/index.js @@ -5,7 +5,9 @@ import { augmentSchema } from 'neo4j-graphql-js' import { typeDefs, resolvers } from './graphql-schema' import { v1 as neo4j } from 'neo4j-driver' import passwordMiddleware from './middleware/passwordMiddleware' +import softDeleteMiddleware from './middleware/softDeleteMiddleware' import sluggifyMiddleware from './middleware/sluggifyMiddleware' +import fixImageUrlsMiddleware from './middleware/fixImageUrlsMiddleware' import excerptMiddleware from './middleware/excerptMiddleware' import dotenv from 'dotenv' import { @@ -44,42 +46,12 @@ const driver = neo4j.driver( const MOCK = (process.env.MOCK === 'true') console.log('MOCK:', MOCK) -/* const logInput = async (resolve, root, args, context, info) => { - console.log(args) - if (args.email) { - args.email = args.email.toLowerCase() - } - console.log(`1. logInput: ${JSON.stringify(args)}`) - const result = await resolve(root, args, context, info) - console.log(`5. logInput`) - return result -} - -const logResult = async (resolve, root, args, context, info) => { - console.log(`2. logResult`) - let result = await resolve(root, args, context, info) - console.log('RESULT:', result) - if (Array.isArray(result)) { - result.forEach(res => { - if (res.email) { - res.email = '******' - // res.email = res.email.toLowerCase() - } - }) - } else if (typeof result === 'string' && info.fieldName === 'email') { - result = '******' - // result = result.toLowerCase() - } - console.log(`4. logResult: ${JSON.stringify(result)}`) - return result -} */ - const server = new ApolloServer({ context: { driver }, tracing: true, - schema: applyMiddleware(augmentedSchema, passwordMiddleware, sluggifyMiddleware, excerptMiddleware), + schema: applyMiddleware(augmentedSchema, passwordMiddleware, sluggifyMiddleware, excerptMiddleware, fixImageUrlsMiddleware, softDeleteMiddleware), mocks: MOCK ? { User: () => ({ name: () => `${faker.name.firstName()} ${faker.name.lastName()}`, diff --git a/src/middleware/fixImageUrlsMiddleware.js b/src/middleware/fixImageUrlsMiddleware.js new file mode 100644 index 000000000..218f3c2ea --- /dev/null +++ b/src/middleware/fixImageUrlsMiddleware.js @@ -0,0 +1,24 @@ + +const replaceURL = (url) => { + return url.replace('https://api-alpha.human-connection.org/uploads', 'http://localhost:3000/uploads') +} +const fixImageURLs = (result, resolve, root, args, context, info) => { + + if (result && typeof result === 'string' && result.indexOf('https://api-alpha.human-connection.org/uploads') === 0) { + result = replaceURL(result) + } else if (result && typeof result === 'object') { + Object.keys(result).forEach(key => { + result[key] = fixImageURLs(result[key]) + }) + } + + return result +} + +export default { + Query: async (resolve, root, args, context, info) => { + let result = await resolve(root, args, context, info) + + return fixImageURLs(result, resolve, root, args, context, info) + } +} diff --git a/src/middleware/softDeleteMiddleware.js b/src/middleware/softDeleteMiddleware.js new file mode 100644 index 000000000..c40cdf116 --- /dev/null +++ b/src/middleware/softDeleteMiddleware.js @@ -0,0 +1,26 @@ +export default { + Query: { + Post: async (resolve, root, args, context, info) => { + if (typeof args.deleted !== 'boolean') { + args.deleted = false + } + const result = await resolve(root, args, context, info) + return result + }, + Comment: async (resolve, root, args, context, info) => { + if (typeof args.deleted !== 'boolean') { + args.deleted = false + } + const result = await resolve(root, args, context, info) + return result + }, + User: async (resolve, root, args, context, info) => { + // console.log('ROOT', root) + // console.log('ARGS', args) + // console.log('CONTEXT', context) + // console.log('info', info.fieldNodes[0].arguments) + const result = await resolve(root, args, context, info) + return result + } + } +}