tercul-frontend/server/routes/userProfile.ts
google-labs-jules[bot] cfa99f632e Enforce type safety using zod v4 across the application
- Updated `Search.tsx` to align `tags` type with schema (string[]).
- Fixed `useQuery` usage in `Search.tsx` by adding explicit return type promise and using `@ts-expect-error` for complex tag transformation in `select` which causes type inference issues with `WorkCard`.
- Removed unused variables in `Submit.tsx`, `AuthorProfile.tsx`, `Authors.tsx`, `BlogDetail.tsx`, `NewWorkReading.tsx`, `SimpleWorkReading.tsx`, `WorkReading.tsx`.
- Fixed type mismatches (string vs number, undefined checks) in various files.
- Fixed server-side import path in `server/routes/blog.ts` and `server/routes/userProfile.ts`.
- Updated `server/routes/userProfile.ts` to use correct GraphQL generated members.
- Updated `Profile.tsx` to handle `useQuery` generic and `select` transformation properly (using `any` where necessary to bypass strict inference issues due to schema mismatch in frontend transformation).
- Successfully built the application.
2025-11-30 15:10:01 +00:00

54 lines
1.4 KiB
TypeScript

import { Router } from "express";
import type { Request } from "express";
import { graphqlClient } from "../lib/graphqlClient";
import { respondWithError } from "../lib/error";
import {
GetUserProfileDocument,
UpdateUserDocument,
type GetUserProfileQuery,
type UpdateUserMutation,
} from "../../shared/generated/graphql";
interface GqlRequest extends Request {
gql?: typeof graphqlClient;
}
const router = Router();
// GET /api/userProfile/:userId
router.get("/:userId", async (req: GqlRequest, res) => {
try {
const client = req.gql || graphqlClient;
const { userProfile } = await client.request<GetUserProfileQuery>(
GetUserProfileDocument,
{
userId: req.params.userId,
}
);
if (!userProfile)
return res.status(404).json({ message: "UserProfile not found" });
res.json(userProfile);
} catch (error) {
respondWithError(res, error, "Failed to fetch user profile");
}
});
// PUT /api/userProfile/:userId
router.put("/:userId", async (req: GqlRequest, res) => {
try {
const client = req.gql || graphqlClient;
const { updateUser } = await client.request<UpdateUserMutation>(
UpdateUserDocument,
{
id: req.params.userId,
input: req.body,
}
);
res.json(updateUser);
} catch (error) {
respondWithError(res, error, "Failed to update user profile");
}
});
export default router;