mirror of
https://github.com/hex248/sprint.git
synced 2026-02-07 18:23:03 +00:00
iconPreference schema implementation
This commit is contained in:
@@ -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 { eq } from "drizzle-orm";
|
||||||
import { db } from "../client";
|
import { db } from "../client";
|
||||||
|
|
||||||
@@ -23,6 +23,7 @@ export async function updateById(
|
|||||||
name?: string;
|
name?: string;
|
||||||
passwordHash?: string;
|
passwordHash?: string;
|
||||||
avatarURL?: string | null;
|
avatarURL?: string | null;
|
||||||
|
iconPreference?: IconStyle;
|
||||||
},
|
},
|
||||||
): Promise<UserRecord | undefined> {
|
): Promise<UserRecord | undefined> {
|
||||||
const [user] = await db.update(User).set(updates).where(eq(User.id, id)).returning();
|
const [user] = await db.update(User).set(updates).where(eq(User.id, id)).returning();
|
||||||
|
|||||||
@@ -33,7 +33,13 @@ export default async function login(req: BunRequest) {
|
|||||||
|
|
||||||
return new Response(
|
return new Response(
|
||||||
JSON.stringify({
|
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,
|
csrfToken: session.csrfToken,
|
||||||
}),
|
}),
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -34,7 +34,13 @@ export default async function register(req: BunRequest) {
|
|||||||
|
|
||||||
return new Response(
|
return new Response(
|
||||||
JSON.stringify({
|
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,
|
csrfToken: session.csrfToken,
|
||||||
}),
|
}),
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -8,16 +8,16 @@ export default async function update(req: AuthedRequest) {
|
|||||||
const parsed = await parseJsonBody(req, UserUpdateRequestSchema);
|
const parsed = await parseJsonBody(req, UserUpdateRequestSchema);
|
||||||
if ("error" in parsed) return parsed.error;
|
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);
|
const user = await getUserById(req.userId);
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return errorResponse("user not found", "USER_NOT_FOUND", 404);
|
return errorResponse("user not found", "USER_NOT_FOUND", 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!name && !password && avatarURL === undefined) {
|
if (!name && !password && avatarURL === undefined && !iconPreference) {
|
||||||
return errorResponse(
|
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",
|
"NO_UPDATES",
|
||||||
400,
|
400,
|
||||||
);
|
);
|
||||||
@@ -29,7 +29,7 @@ export default async function update(req: AuthedRequest) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const { updateById } = await import("../../db/queries/users");
|
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) {
|
if (!updatedUser) {
|
||||||
return errorResponse("failed to update user", "UPDATE_FAILED", 500);
|
return errorResponse("failed to update user", "UPDATE_FAILED", 500);
|
||||||
|
|||||||
Reference in New Issue
Block a user