From 05022d766147400013ff8bf9f2945f3222b960e4 Mon Sep 17 00:00:00 2001 From: Oliver Bryan <04oliverbryan@gmail.com> Date: Sat, 17 Jan 2026 21:24:48 +0000 Subject: [PATCH] iconPreference schema implementation --- packages/backend/src/db/queries/users.ts | 3 ++- packages/backend/src/routes/auth/login.ts | 8 +++++++- packages/backend/src/routes/auth/register.ts | 8 +++++++- packages/backend/src/routes/user/update.ts | 8 ++++---- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/packages/backend/src/db/queries/users.ts b/packages/backend/src/db/queries/users.ts index 7021d79..67774e2 100644 --- a/packages/backend/src/db/queries/users.ts +++ b/packages/backend/src/db/queries/users.ts @@ -1,4 +1,4 @@ -import { User, type UserRecord } from "@sprint/shared"; +import { type IconStyle, User, type UserRecord } from "@sprint/shared"; import { eq } from "drizzle-orm"; import { db } from "../client"; @@ -23,6 +23,7 @@ export async function updateById( name?: string; passwordHash?: string; avatarURL?: string | null; + iconPreference?: IconStyle; }, ): Promise { const [user] = await db.update(User).set(updates).where(eq(User.id, id)).returning(); diff --git a/packages/backend/src/routes/auth/login.ts b/packages/backend/src/routes/auth/login.ts index fdba659..4bda879 100644 --- a/packages/backend/src/routes/auth/login.ts +++ b/packages/backend/src/routes/auth/login.ts @@ -33,7 +33,13 @@ export default async function login(req: BunRequest) { return new Response( JSON.stringify({ - user: { id: user.id, name: user.name, username: user.username, avatarURL: user.avatarURL }, + user: { + id: user.id, + name: user.name, + username: user.username, + avatarURL: user.avatarURL, + iconPreference: user.iconPreference, + }, csrfToken: session.csrfToken, }), { diff --git a/packages/backend/src/routes/auth/register.ts b/packages/backend/src/routes/auth/register.ts index a92fe99..6ca2ab0 100644 --- a/packages/backend/src/routes/auth/register.ts +++ b/packages/backend/src/routes/auth/register.ts @@ -34,7 +34,13 @@ export default async function register(req: BunRequest) { return new Response( JSON.stringify({ - user: { id: user.id, name: user.name, username: user.username, avatarURL: user.avatarURL }, + user: { + id: user.id, + name: user.name, + username: user.username, + avatarURL: user.avatarURL, + iconPreference: user.iconPreference, + }, csrfToken: session.csrfToken, }), { diff --git a/packages/backend/src/routes/user/update.ts b/packages/backend/src/routes/user/update.ts index ab319ea..7ef2af5 100644 --- a/packages/backend/src/routes/user/update.ts +++ b/packages/backend/src/routes/user/update.ts @@ -8,16 +8,16 @@ export default async function update(req: AuthedRequest) { const parsed = await parseJsonBody(req, UserUpdateRequestSchema); if ("error" in parsed) return parsed.error; - const { name, password, avatarURL } = parsed.data; + const { name, password, avatarURL, iconPreference } = parsed.data; const user = await getUserById(req.userId); if (!user) { return errorResponse("user not found", "USER_NOT_FOUND", 404); } - if (!name && !password && avatarURL === undefined) { + if (!name && !password && avatarURL === undefined && !iconPreference) { return errorResponse( - "at least one of name, password, or avatarURL must be provided", + "at least one of name, password, avatarURL, or iconPreference must be provided", "NO_UPDATES", 400, ); @@ -29,7 +29,7 @@ export default async function update(req: AuthedRequest) { } const { updateById } = await import("../../db/queries/users"); - const updatedUser = await updateById(user.id, { name, passwordHash, avatarURL }); + const updatedUser = await updateById(user.id, { name, passwordHash, avatarURL, iconPreference }); if (!updatedUser) { return errorResponse("failed to update user", "UPDATE_FAILED", 500);