From a614d11535270f608d0fb5111a1c11721e6ddb4e Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Thu, 4 Mar 2021 16:57:09 +0100 Subject: [PATCH] created transactions folder to reuse cypher statements. Put isValidInviteCode resolving transaction there --- backend/src/schema/resolvers/inviteCodes.js | 26 +++---------------- .../resolvers/transactions/inviteCodes.js | 22 ++++++++++++++++ 2 files changed, 26 insertions(+), 22 deletions(-) create mode 100644 backend/src/schema/resolvers/transactions/inviteCodes.js diff --git a/backend/src/schema/resolvers/inviteCodes.js b/backend/src/schema/resolvers/inviteCodes.js index 91148a08d..35c8c6ece 100644 --- a/backend/src/schema/resolvers/inviteCodes.js +++ b/backend/src/schema/resolvers/inviteCodes.js @@ -1,5 +1,6 @@ import generateInviteCode from './helpers/generateInviteCode' import Resolver from './helpers/Resolver' +import { validateInviteCode } from './transactions/inviteCodes' const uniqueInviteCode = async (session, code) => { return session.readTransaction(async (txc) => { @@ -36,29 +37,10 @@ export default { }, isValidInviteCode: async (_parent, args, context, _resolveInfo) => { const { code } = args - if (!code) return false const session = context.driver.session() - const readTxResultPromise = session.readTransaction(async (txc) => { - const result = await txc.run( - `MATCH (ic:InviteCode { code: toUpper($code) }) - RETURN - CASE - WHEN ic.expiresAt IS NULL THEN true - WHEN datetime(ic.expiresAt) >= datetime() THEN true - ELSE false END AS result`, - { - code, - }, - ) - return result.records.map((record) => record.get('result')) - }) - try { - const txResult = await readTxResultPromise - return !!txResult[0] - } finally { - session.close() - } - }, + if (!code) return false + return await validateInviteCode(session, code) + } }, Mutation: { GenerateInviteCode: async (_parent, args, context, _resolveInfo) => { diff --git a/backend/src/schema/resolvers/transactions/inviteCodes.js b/backend/src/schema/resolvers/transactions/inviteCodes.js new file mode 100644 index 000000000..0ae2e9ad3 --- /dev/null +++ b/backend/src/schema/resolvers/transactions/inviteCodes.js @@ -0,0 +1,22 @@ +export async function validateInviteCode(session, inviteCode) { + const readTxResultPromise = session.readTransaction(async (txc) => { + const result = await txc.run( + `MATCH (ic:InviteCode { code: toUpper($inviteCode) }) + RETURN + CASE + WHEN ic.expiresAt IS NULL THEN true + WHEN datetime(ic.expiresAt) >= datetime() THEN true + ELSE false END AS result`, + { + inviteCode, + }, + ) + return result.records.map((record) => record.get('result')) + }) + try { + const txResult = await readTxResultPromise + return !!txResult[0] + } finally { + session.close() + } +}