From 19b4835bea200099bae15bc02edd5e4cafa2c46c Mon Sep 17 00:00:00 2001 From: Joe Carstairs Date: Mon, 22 Jan 2024 14:59:51 +0000 Subject: verifyRegistrationResponse is single-responsibility! --- api/db/_deleteCurrentChallenge.ts | 15 +++++++++++++++ api/db/_deleteUser.ts | 18 ++++++++++++++++++ api/db/_deleteUserAuthenticators.ts | 16 ++++++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 api/db/_deleteCurrentChallenge.ts create mode 100644 api/db/_deleteUser.ts create mode 100644 api/db/_deleteUserAuthenticators.ts (limited to 'api/db') diff --git a/api/db/_deleteCurrentChallenge.ts b/api/db/_deleteCurrentChallenge.ts new file mode 100644 index 0000000..1f597bc --- /dev/null +++ b/api/db/_deleteCurrentChallenge.ts @@ -0,0 +1,15 @@ +import { sql } from '@vercel/postgres'; +import { CURRENT_CHALLENGES } from './_tables'; + +export default async function deleteCurrentChallenge(userId: string) { + const query = ` + DELETE FROM ${CURRENT_CHALLENGES.name} + WHERE ${CURRENT_CHALLENGES.fields.userId} = '${userId}' + `; + + try { + await sql.query(query); + } catch (err) { + throw new Error(`Failed to delete current challenge for user with ID ${userId} in database. Query was ${query.replace(/\s+/g, ' ')}. ${err}`); + } +} diff --git a/api/db/_deleteUser.ts b/api/db/_deleteUser.ts new file mode 100644 index 0000000..c926800 --- /dev/null +++ b/api/db/_deleteUser.ts @@ -0,0 +1,18 @@ +import type User from '../types/User'; + +import { sql } from '@vercel/postgres'; +import { USERS } from './_tables'; + +export default async function deleteUser(id: User['id']) { + const query = ` + DELETE FROM ${USERS.name} + WHERE ${USERS.fields.id} = '${id}', + ; + `; + + try { + await sql.query(query); + } catch (err) { + throw new Error(`Failed to delete user from database with ID: ${id}. Query was ${query.replace(/\s+/g, ' ')}. ${err}`); + } +} diff --git a/api/db/_deleteUserAuthenticators.ts b/api/db/_deleteUserAuthenticators.ts new file mode 100644 index 0000000..32f4ea5 --- /dev/null +++ b/api/db/_deleteUserAuthenticators.ts @@ -0,0 +1,16 @@ +import { sql } from '@vercel/postgres'; +import { AUTHENTICATORS } from './_tables'; +import User from '../types/User'; + +export default async function deleteUserAuthenticators(userId: User['id']) { + const query = ` + DELETE FROM ${AUTHENTICATORS.name} + WHERE ${AUTHENTICATORS.fields.id} = '${id}'; + `; + + try { + await sql.query(query); + } catch (err) { + throw new Error(`Failed to delete authenticators for user with ID ${userId} from database. Query was ${query.replace(/\s+/g, ' ')}. ${err}`); + } +} -- cgit v1.2.3