Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: create endpoint to get users #81

Open
wants to merge 31 commits into
base: main
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
ffceba0
feat: create endpoint to get users
Luana-ns Oct 18, 2023
a918fb2
Update route.ts
ogatalars Oct 18, 2023
4e3ec12
Create user.dao.ts
ogatalars Oct 25, 2023
d171899
Update route.ts
ogatalars Oct 25, 2023
743c01e
ref: add initial fixes
Luana-ns Oct 25, 2023
9fb30ea
ref: merge
Luana-ns Oct 25, 2023
0c972e7
Delete src/app/api/users/user.dao.ts
ogatalars Nov 29, 2023
ff74415
Update route.ts
ogatalars Nov 29, 2023
40f1355
Update user.dao.ts
ogatalars Nov 29, 2023
2e8779c
Update route.ts
ogatalars Nov 29, 2023
9c53c55
fix: route.ts
ogatalars Nov 29, 2023
687e11a
Update route.ts with prisma
ogatalars Nov 29, 2023
978f039
fix: user.dao.ts duplication
ogatalars Nov 29, 2023
773dd48
change the place on route.ts
ogatalars Nov 29, 2023
0518d94
fix user.dao.ts
ogatalars Nov 29, 2023
64b5e28
follow review on user.dao.ts
ogatalars Dec 2, 2023
7c005d2
Update user.dao.ts
ogatalars Jan 25, 2024
450f24b
follow review in route.ts
ogatalars Jan 25, 2024
7cd623e
fix: route.ts
ogatalars Jan 26, 2024
8b8b55c
fix: following Frat's review in user.dao.ts
ogatalars Jan 26, 2024
811d5ae
fix: lint in route.ts
ogatalars Jan 26, 2024
2afd036
Fix: lint in user.dao.ts
ogatalars Jan 26, 2024
5310e4e
fix: lint
Luana-ns Feb 1, 2024
82cf3cd
fix: fetchUsers
Luana-ns Feb 1, 2024
f71d396
fix: users route
Luana-ns Feb 14, 2024
fe176bc
refactor: route.ts
ogatalars Mar 3, 2024
2928419
refactor: follow review on route.ts
ogatalars Mar 4, 2024
2ef45dd
revert: user dao changes
Mar 6, 2024
b6708e4
fix: update user dao for fetch all users
Mar 6, 2024
472b942
feat: create pagination shared zod validation
Mar 8, 2024
85ac528
feat: enhance validation and filter conditions for get users endpoint
Mar 8, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 20 additions & 17 deletions src/app/api/users/route.ts
Original file line number Diff line number Diff line change
@@ -1,27 +1,30 @@
import { user } from "@/dao/user.dao";
import { NextApiRequest } from "next";
import { NextResponse } from "next/server";
import { NextResponse, NextRequest } from "next/server";
import { z } from "zod";

export async function GET(req: NextApiRequest) {
try {
const { username, email, page, pageSize } = req.query || {};
const checkGetAllUsersParams = z.object({
frattezi marked this conversation as resolved.
Show resolved Hide resolved
username: z.string().optional(),
email: z.string().optional(),
page: z.number().optional().transform((val) => (val ? Number(val) : undefined)),
pageSize: z.number().optional().transform((val) => (val ? Number(val) : undefined)),
frattezi marked this conversation as resolved.
Show resolved Hide resolved
});

const filter = {
username: typeof username === "string" ? username : undefined,
email: typeof email === "string" ? email : undefined,
};
export async function GET(req: NextRequest) {
frattezi marked this conversation as resolved.
Show resolved Hide resolved
try {

const queryParams = checkGetAllUsersParams.parse(Object.fromEntries(req.nextUrl.searchParams));

const pageNum = page ? parseInt(page as string, 10) : 1;
const size = pageSize ? parseInt(pageSize as string, 10) : 10;
const { username, email, page, pageSize } = queryParams;

const users = await user.fetchUsers({ username, email }, page, pageSize);

const users = await user.fetchUsers(filter, pageNum, size);
return new NextResponse(JSON.stringify(users), {
status: 201,
status: 200,
});
} catch (error) {
return new NextResponse(
JSON.stringify({ error: "Internal Server Error" }),
{ status: 500 }
);
console.error(error);
return new NextResponse(JSON.stringify({ error: "Internal Server Error" }), {
status: 500,
});
frattezi marked this conversation as resolved.
Show resolved Hide resolved
}
}
Loading