diff --git a/backend/.env.template b/backend/.env.template index abc62b2dc..e905d1eb6 100644 --- a/backend/.env.template +++ b/backend/.env.template @@ -4,7 +4,7 @@ NEO4J_PASSWORD=letmein GRAPHQL_PORT=4000 GRAPHQL_URI=http://localhost:4000 CLIENT_URI=http://localhost:3000 -MOCK=false +MOCKS=false JWT_SECRET="b/&&7b78BF&fv/Vd" MAPBOX_TOKEN="pk.eyJ1IjoiaHVtYW4tY29ubmVjdGlvbiIsImEiOiJjajl0cnBubGoweTVlM3VwZ2lzNTNud3ZtIn0.KZ8KK9l70omjXbEkkbHGsQ" diff --git a/backend/src/config/index.js b/backend/src/config/index.js new file mode 100644 index 000000000..7a0387560 --- /dev/null +++ b/backend/src/config/index.js @@ -0,0 +1,26 @@ +import dotenv from 'dotenv' + +dotenv.config() + +const requiredConfigs = { + MAPBOX_TOKEN: process.env.MAPBOX_TOKEN, + JWT_SECRET: process.env.JWT_SECRET, + PRIVATE_KEY_PASSPHRASE: process.env.PRIVATE_KEY_PASSPHRASE, +} + +const developmentConfigs = { + DEBUG: process.env.NODE_ENV !== 'production' && process.env.DEBUG === 'true', + MOCKS: process.env.MOCKS === 'true', +} + +// check required configs and throw error +Object.entries(requiredConfigs).map(entry => { + if (!entry[1]) { + throw new Error(`ERROR: "${entry[0]}" env variable is missing.`) + } +}) + +export default { + ...requiredConfigs, + ...developmentConfigs, +} diff --git a/backend/src/graphql-schema.js b/backend/src/graphql-schema.js deleted file mode 100644 index 01b40dfc5..000000000 --- a/backend/src/graphql-schema.js +++ /dev/null @@ -1,2 +0,0 @@ -export { default as typeDefs } from './types' -export { default as resolvers } from './resolvers' diff --git a/backend/src/schema/index.js b/backend/src/schema/index.js new file mode 100644 index 000000000..d294d8aba --- /dev/null +++ b/backend/src/schema/index.js @@ -0,0 +1,24 @@ +import { makeAugmentedSchema } from 'neo4j-graphql-js' +import CONFIG from './../config' +import applyScalars from './../bootstrap/scalars' +import applyDirectives from './../bootstrap/directives' +import typeDefs from './types' +import resolvers from './resolvers' + +export default applyScalars( + applyDirectives( + makeAugmentedSchema({ + typeDefs, + resolvers, + config: { + query: { + exclude: ['Notfication', 'Statistics', 'LoggedInUser'], + }, + mutation: { + exclude: ['Notfication', 'Statistics', 'LoggedInUser'], + }, + debug: CONFIG.DEBUG, + }, + }), + ), +) diff --git a/backend/src/resolvers/badges.spec.js b/backend/src/schema/resolvers/badges.spec.js similarity index 100% rename from backend/src/resolvers/badges.spec.js rename to backend/src/schema/resolvers/badges.spec.js diff --git a/backend/src/resolvers/comments.js b/backend/src/schema/resolvers/comments.js similarity index 100% rename from backend/src/resolvers/comments.js rename to backend/src/schema/resolvers/comments.js diff --git a/backend/src/resolvers/comments.spec.js b/backend/src/schema/resolvers/comments.spec.js similarity index 100% rename from backend/src/resolvers/comments.spec.js rename to backend/src/schema/resolvers/comments.spec.js diff --git a/backend/src/resolvers/fileUpload/index.js b/backend/src/schema/resolvers/fileUpload/index.js similarity index 100% rename from backend/src/resolvers/fileUpload/index.js rename to backend/src/schema/resolvers/fileUpload/index.js diff --git a/backend/src/resolvers/fileUpload/spec.js b/backend/src/schema/resolvers/fileUpload/spec.js similarity index 100% rename from backend/src/resolvers/fileUpload/spec.js rename to backend/src/schema/resolvers/fileUpload/spec.js diff --git a/backend/src/resolvers/follow.js b/backend/src/schema/resolvers/follow.js similarity index 100% rename from backend/src/resolvers/follow.js rename to backend/src/schema/resolvers/follow.js diff --git a/backend/src/resolvers/follow.spec.js b/backend/src/schema/resolvers/follow.spec.js similarity index 100% rename from backend/src/resolvers/follow.spec.js rename to backend/src/schema/resolvers/follow.spec.js diff --git a/backend/src/resolvers/index.js b/backend/src/schema/resolvers/index.js similarity index 100% rename from backend/src/resolvers/index.js rename to backend/src/schema/resolvers/index.js diff --git a/backend/src/resolvers/moderation.js b/backend/src/schema/resolvers/moderation.js similarity index 100% rename from backend/src/resolvers/moderation.js rename to backend/src/schema/resolvers/moderation.js diff --git a/backend/src/resolvers/moderation.spec.js b/backend/src/schema/resolvers/moderation.spec.js similarity index 100% rename from backend/src/resolvers/moderation.spec.js rename to backend/src/schema/resolvers/moderation.spec.js diff --git a/backend/src/resolvers/notifications.js b/backend/src/schema/resolvers/notifications.js similarity index 100% rename from backend/src/resolvers/notifications.js rename to backend/src/schema/resolvers/notifications.js diff --git a/backend/src/resolvers/notifications.spec.js b/backend/src/schema/resolvers/notifications.spec.js similarity index 100% rename from backend/src/resolvers/notifications.spec.js rename to backend/src/schema/resolvers/notifications.spec.js diff --git a/backend/src/resolvers/posts.js b/backend/src/schema/resolvers/posts.js similarity index 100% rename from backend/src/resolvers/posts.js rename to backend/src/schema/resolvers/posts.js diff --git a/backend/src/resolvers/posts.spec.js b/backend/src/schema/resolvers/posts.spec.js similarity index 100% rename from backend/src/resolvers/posts.spec.js rename to backend/src/schema/resolvers/posts.spec.js diff --git a/backend/src/resolvers/reports.js b/backend/src/schema/resolvers/reports.js similarity index 100% rename from backend/src/resolvers/reports.js rename to backend/src/schema/resolvers/reports.js diff --git a/backend/src/resolvers/reports.spec.js b/backend/src/schema/resolvers/reports.spec.js similarity index 100% rename from backend/src/resolvers/reports.spec.js rename to backend/src/schema/resolvers/reports.spec.js diff --git a/backend/src/resolvers/rewards.js b/backend/src/schema/resolvers/rewards.js similarity index 100% rename from backend/src/resolvers/rewards.js rename to backend/src/schema/resolvers/rewards.js diff --git a/backend/src/resolvers/rewards.spec.js b/backend/src/schema/resolvers/rewards.spec.js similarity index 100% rename from backend/src/resolvers/rewards.spec.js rename to backend/src/schema/resolvers/rewards.spec.js diff --git a/backend/src/resolvers/shout.js b/backend/src/schema/resolvers/shout.js similarity index 100% rename from backend/src/resolvers/shout.js rename to backend/src/schema/resolvers/shout.js diff --git a/backend/src/resolvers/shout.spec.js b/backend/src/schema/resolvers/shout.spec.js similarity index 100% rename from backend/src/resolvers/shout.spec.js rename to backend/src/schema/resolvers/shout.spec.js diff --git a/backend/src/resolvers/socialMedia.js b/backend/src/schema/resolvers/socialMedia.js similarity index 100% rename from backend/src/resolvers/socialMedia.js rename to backend/src/schema/resolvers/socialMedia.js diff --git a/backend/src/resolvers/socialMedia.spec.js b/backend/src/schema/resolvers/socialMedia.spec.js similarity index 100% rename from backend/src/resolvers/socialMedia.spec.js rename to backend/src/schema/resolvers/socialMedia.spec.js diff --git a/backend/src/resolvers/statistics.js b/backend/src/schema/resolvers/statistics.js similarity index 100% rename from backend/src/resolvers/statistics.js rename to backend/src/schema/resolvers/statistics.js diff --git a/backend/src/resolvers/user_management.js b/backend/src/schema/resolvers/user_management.js similarity index 98% rename from backend/src/resolvers/user_management.js rename to backend/src/schema/resolvers/user_management.js index e2fd5acf1..eb07a07b3 100644 --- a/backend/src/resolvers/user_management.js +++ b/backend/src/schema/resolvers/user_management.js @@ -1,4 +1,4 @@ -import encode from '../jwt/encode' +import encode from '../../jwt/encode' import bcrypt from 'bcryptjs' import { AuthenticationError } from 'apollo-server' import { neo4jgraphql } from 'neo4j-graphql-js' diff --git a/backend/src/resolvers/user_management.spec.js b/backend/src/schema/resolvers/user_management.spec.js similarity index 100% rename from backend/src/resolvers/user_management.spec.js rename to backend/src/schema/resolvers/user_management.spec.js diff --git a/backend/src/resolvers/users.js b/backend/src/schema/resolvers/users.js similarity index 100% rename from backend/src/resolvers/users.js rename to backend/src/schema/resolvers/users.js diff --git a/backend/src/resolvers/users.spec.js b/backend/src/schema/resolvers/users.spec.js similarity index 100% rename from backend/src/resolvers/users.spec.js rename to backend/src/schema/resolvers/users.spec.js diff --git a/backend/src/types/enum/BadgeStatus.gql b/backend/src/schema/types/enum/BadgeStatus.gql similarity index 100% rename from backend/src/types/enum/BadgeStatus.gql rename to backend/src/schema/types/enum/BadgeStatus.gql diff --git a/backend/src/types/enum/BadgeType.gql b/backend/src/schema/types/enum/BadgeType.gql similarity index 100% rename from backend/src/types/enum/BadgeType.gql rename to backend/src/schema/types/enum/BadgeType.gql diff --git a/backend/src/types/enum/UserGroup.gql b/backend/src/schema/types/enum/UserGroup.gql similarity index 100% rename from backend/src/types/enum/UserGroup.gql rename to backend/src/schema/types/enum/UserGroup.gql diff --git a/backend/src/types/enum/Visibility.gql b/backend/src/schema/types/enum/Visibility.gql similarity index 100% rename from backend/src/types/enum/Visibility.gql rename to backend/src/schema/types/enum/Visibility.gql diff --git a/backend/src/types/index.js b/backend/src/schema/types/index.js similarity index 100% rename from backend/src/types/index.js rename to backend/src/schema/types/index.js diff --git a/backend/src/types/scalar/Date.gql_ b/backend/src/schema/types/scalar/Date.gql_ similarity index 100% rename from backend/src/types/scalar/Date.gql_ rename to backend/src/schema/types/scalar/Date.gql_ diff --git a/backend/src/types/scalar/DateTime.gql_ b/backend/src/schema/types/scalar/DateTime.gql_ similarity index 100% rename from backend/src/types/scalar/DateTime.gql_ rename to backend/src/schema/types/scalar/DateTime.gql_ diff --git a/backend/src/types/scalar/Time.gql_ b/backend/src/schema/types/scalar/Time.gql_ similarity index 100% rename from backend/src/types/scalar/Time.gql_ rename to backend/src/schema/types/scalar/Time.gql_ diff --git a/backend/src/types/scalar/Upload.gql b/backend/src/schema/types/scalar/Upload.gql similarity index 100% rename from backend/src/types/scalar/Upload.gql rename to backend/src/schema/types/scalar/Upload.gql diff --git a/backend/src/types/schema.gql b/backend/src/schema/types/schema.gql similarity index 100% rename from backend/src/types/schema.gql rename to backend/src/schema/types/schema.gql diff --git a/backend/src/types/schema_full.gql_ b/backend/src/schema/types/schema_full.gql_ similarity index 100% rename from backend/src/types/schema_full.gql_ rename to backend/src/schema/types/schema_full.gql_ diff --git a/backend/src/types/type/Badge.gql b/backend/src/schema/types/type/Badge.gql similarity index 100% rename from backend/src/types/type/Badge.gql rename to backend/src/schema/types/type/Badge.gql diff --git a/backend/src/types/type/Category.gql b/backend/src/schema/types/type/Category.gql similarity index 100% rename from backend/src/types/type/Category.gql rename to backend/src/schema/types/type/Category.gql diff --git a/backend/src/types/type/Comment.gql b/backend/src/schema/types/type/Comment.gql similarity index 100% rename from backend/src/types/type/Comment.gql rename to backend/src/schema/types/type/Comment.gql diff --git a/backend/src/types/type/Post.gql b/backend/src/schema/types/type/Post.gql similarity index 100% rename from backend/src/types/type/Post.gql rename to backend/src/schema/types/type/Post.gql diff --git a/backend/src/types/type/Tag.gql b/backend/src/schema/types/type/Tag.gql similarity index 100% rename from backend/src/types/type/Tag.gql rename to backend/src/schema/types/type/Tag.gql diff --git a/backend/src/types/type/User.gql b/backend/src/schema/types/type/User.gql similarity index 100% rename from backend/src/types/type/User.gql rename to backend/src/schema/types/type/User.gql diff --git a/backend/src/server.js b/backend/src/server.js index 59261302f..3431320a7 100644 --- a/backend/src/server.js +++ b/backend/src/server.js @@ -1,48 +1,19 @@ -import { GraphQLServer } from 'graphql-yoga' -import { makeAugmentedSchema } from 'neo4j-graphql-js' -import { typeDefs, resolvers } from './graphql-schema' import express from 'express' -import dotenv from 'dotenv' +import helmet from 'helmet' +import { GraphQLServer } from 'graphql-yoga' +import CONFIG from './config' import mocks from './mocks' import middleware from './middleware' -import applyDirectives from './bootstrap/directives' -import applyScalars from './bootstrap/scalars' import { getDriver } from './bootstrap/neo4j' -import helmet from 'helmet' import decode from './jwt/decode' - -dotenv.config() -// check env and warn -const requiredEnvVars = ['MAPBOX_TOKEN', 'JWT_SECRET', 'PRIVATE_KEY_PASSPHRASE'] -requiredEnvVars.forEach(env => { - if (!process.env[env]) { - throw new Error(`ERROR: "${env}" env variable is missing.`) - } -}) +import schema from './schema' const driver = getDriver() -const debug = process.env.NODE_ENV !== 'production' && process.env.DEBUG === 'true' - -let schema = makeAugmentedSchema({ - typeDefs, - resolvers, - config: { - query: { - exclude: ['Notfication', 'Statistics', 'LoggedInUser'], - }, - mutation: { - exclude: ['Notfication', 'Statistics', 'LoggedInUser'], - }, - debug: debug, - }, -}) -schema = applyScalars(applyDirectives(schema)) const createServer = options => { const defaults = { context: async ({ request }) => { - const authorizationHeader = request.headers.authorization || '' - const user = await decode(driver, authorizationHeader) + const user = await decode(driver, request.headers.authorization) return { driver, user, @@ -52,11 +23,11 @@ const createServer = options => { }, } }, - schema: schema, - debug: debug, - tracing: debug, + schema, + debug: CONFIG.DEBUG, + tracing: CONFIG.DEBUG, middlewares: middleware(schema), - mocks: process.env.MOCK === 'true' ? mocks : false, + mocks: CONFIG.MOCKS ? mocks : false, } const server = new GraphQLServer(Object.assign({}, defaults, options)) diff --git a/deployment/human-connection/templates/configmap.template.yaml b/deployment/human-connection/templates/configmap.template.yaml index baf41661a..87b51a7d3 100644 --- a/deployment/human-connection/templates/configmap.template.yaml +++ b/deployment/human-connection/templates/configmap.template.yaml @@ -4,7 +4,7 @@ data: GRAPHQL_PORT: "4000" GRAPHQL_URI: "http://nitro-backend.human-connection:4000" - MOCK: "false" + MOCKS: "false" NEO4J_URI: "bolt://nitro-neo4j.human-connection:7687" NEO4J_USER: "neo4j" NEO4J_AUTH: "none" diff --git a/docker-compose.maintenance.yml b/docker-compose.maintenance.yml index 113b4492c..ad599e153 100644 --- a/docker-compose.maintenance.yml +++ b/docker-compose.maintenance.yml @@ -19,7 +19,7 @@ services: - GRAPHQL_URI=http://localhost:4000 - CLIENT_URI=http://localhost:3000 - JWT_SECRET=b/&&7b78BF&fv/Vd - - MOCK=false + - MOCKS=false - MAPBOX_TOKEN=pk.eyJ1IjoiaHVtYW4tY29ubmVjdGlvbiIsImEiOiJjajl0cnBubGoweTVlM3VwZ2lzNTNud3ZtIn0.KZ8KK9l70omjXbEkkbHGsQ - PRIVATE_KEY_PASSPHRASE=a7dsf78sadg87ad87sfagsadg78 - NEO4J_apoc_import_file_enabled=true diff --git a/docker-compose.yml b/docker-compose.yml index 896d1bef9..ca66217c2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -32,7 +32,7 @@ services: - GRAPHQL_URI=http://localhost:4000 - CLIENT_URI=http://localhost:3000 - JWT_SECRET=b/&&7b78BF&fv/Vd - - MOCK=false + - MOCKS=false - MAPBOX_TOKEN=pk.eyJ1IjoiaHVtYW4tY29ubmVjdGlvbiIsImEiOiJjajl0cnBubGoweTVlM3VwZ2lzNTNud3ZtIn0.KZ8KK9l70omjXbEkkbHGsQ - PRIVATE_KEY_PASSPHRASE=a7dsf78sadg87ad87sfagsadg78 neo4j: