From acdbc3422302a3312bbefa7b2cce06a806e52426 Mon Sep 17 00:00:00 2001 From: "Kalle (Sendou)" <38327916+Sendouc@users.noreply.github.com> Date: Sat, 18 Dec 2021 12:33:09 +0200 Subject: [PATCH] Move user upsert code to auth.ts Pretty ugly to do it this way but otherwise server won't run and don't feel like setting ts paths for ts-node --- app/models/User.ts | 43 ----------------------------------- app/services/user.ts | 52 +------------------------------------------ server/auth.ts | 53 ++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 52 insertions(+), 96 deletions(-) delete mode 100644 app/models/User.ts diff --git a/app/models/User.ts b/app/models/User.ts deleted file mode 100644 index 41e7dea9c..000000000 --- a/app/models/User.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { db } from "~/utils/db.server"; - -export function upsert({ - discordId, - discordName, - discordDiscriminator, - discordAvatar, - discordRefreshToken, - connections, -}: { - discordId: string; - discordName: string; - discordDiscriminator: string; - discordAvatar: string | null; - discordRefreshToken: string; - connections: { - twitch?: string; - twitter?: string; - youtubeId?: string; - youtubeName?: string; - } | null; -}) { - return db.user.upsert({ - create: { - discordId, - discordName, - discordDiscriminator, - discordAvatar, - discordRefreshToken, - ...connections, - }, - update: { - discordName, - discordDiscriminator, - discordAvatar, - discordRefreshToken, - ...connections, - }, - where: { - discordId, - }, - }); -} diff --git a/app/services/user.ts b/app/services/user.ts index 7ec3621f0..b387c6c13 100644 --- a/app/services/user.ts +++ b/app/services/user.ts @@ -1,53 +1,3 @@ -import type { Strategy as DiscordStrategy } from "passport-discord"; import * as TrustRelationship from "~/models/TrustRelationship"; -import * as User from "~/models/User"; -export async function upsertUser({ - loggedInUser, - refreshToken, -}: { - loggedInUser: DiscordStrategy.Profile; - refreshToken: string; -}) { - return User.upsert({ - discordId: loggedInUser.id, - discordName: loggedInUser.username, - discordDiscriminator: loggedInUser.discriminator, - discordAvatar: loggedInUser.avatar, - discordRefreshToken: refreshToken, - connections: parseConnections(), - }); - - function parseConnections() { - if (!loggedInUser.connections) return null; - - const result: { - twitch?: string; - twitter?: string; - youtubeId?: string; - youtubeName?: string; - } = {}; - - for (const connection of loggedInUser.connections) { - if (connection.visibility !== 1 || !connection.verified) continue; - - switch (connection.type) { - case "twitch": - result.twitch = connection.name; - break; - case "twitter": - result.twitter = connection.name; - break; - case "youtube": - result.youtubeId = connection.id; - result.youtubeName = connection.name; - } - } - - return result; - } -} - -export function getTrustingUsers(userId: string) { - return TrustRelationship.findManyByTrustReceiverId(userId); -} +export const getTrustingUsers = TrustRelationship.findManyByTrustReceiverId; diff --git a/server/auth.ts b/server/auth.ts index d97e60a24..cea6ba650 100644 --- a/server/auth.ts +++ b/server/auth.ts @@ -4,7 +4,7 @@ import session from "express-session"; import cookieParser from "cookie-parser"; import passport from "passport"; import { Strategy as DiscordStrategy } from "passport-discord"; -import { upsertUser } from "../app/services/user"; +import { db } from "../app/utils/db.server"; export function setUpAuth(app: Express): void { invariant( @@ -30,7 +30,27 @@ export function setUpAuth(app: Express): void { scope: ["identify", "connections"], }, function (_accessToken, refreshToken, loggedInUser, cb) { - upsertUser({ loggedInUser, refreshToken }) + db.user + .upsert({ + create: { + discordId: loggedInUser.id, + discordName: loggedInUser.username, + discordDiscriminator: loggedInUser.discriminator, + discordAvatar: loggedInUser.avatar, + discordRefreshToken: refreshToken, + ...parseConnections(), + }, + update: { + discordName: loggedInUser.username, + discordDiscriminator: loggedInUser.discriminator, + discordAvatar: loggedInUser.avatar, + discordRefreshToken: refreshToken, + ...parseConnections(), + }, + where: { + discordId: loggedInUser.id, + }, + }) .then((user) => { return cb(null, { id: user.id, @@ -39,6 +59,35 @@ export function setUpAuth(app: Express): void { }); }) .catch((err) => cb(err)); + + function parseConnections() { + if (!loggedInUser.connections) return null; + + const result: { + twitch?: string; + twitter?: string; + youtubeId?: string; + youtubeName?: string; + } = {}; + + for (const connection of loggedInUser.connections) { + if (connection.visibility !== 1 || !connection.verified) continue; + + switch (connection.type) { + case "twitch": + result.twitch = connection.name; + break; + case "twitter": + result.twitter = connection.name; + break; + case "youtube": + result.youtubeId = connection.id; + result.youtubeName = connection.name; + } + } + + return result; + } } ) );