-
Notifications
You must be signed in to change notification settings - Fork 0
Get all users route #69
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
Changes from 7 commits
f852c0b
bd102d8
c4fd9eb
bd3d8b0
4603e63
490469e
2f7bde9
fa2927e
6ce5544
4e10066
b9acb6f
e3f714d
c8ebd7e
4cf1d95
f4761be
a462b45
d2be993
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1 +1 @@ | ||
| DATABASE_URL=postgresql://branch_dev:password@localhost:5432/branch_db | ||
| DATABASE_URL=postgresql://branch_dev:password@localhost:5433/branch_db | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,5 +1,6 @@ | ||
| import { APIGatewayProxyEvent, APIGatewayProxyResult } from 'aws-lambda'; | ||
| import db from './db'; | ||
| import db from './db' | ||
|
|
||
|
|
||
| export const handler = async (event: any): Promise<APIGatewayProxyResult> => { | ||
| try { | ||
|
|
@@ -10,6 +11,8 @@ export const handler = async (event: any): Promise<APIGatewayProxyResult> => { | |
| const normalizedPath = rawPath.replace(/\/$/, ''); | ||
| const method = (event.requestContext?.http?.method || event.httpMethod || 'GET').toUpperCase(); | ||
|
|
||
| console.log('DEBUG - rawPath:', rawPath, 'normalizedPath:', normalizedPath, 'method:', method); | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. maybe remove if not needed anymore |
||
|
|
||
| // Health check | ||
| if ((normalizedPath.endsWith('/health') || normalizedPath === '/health') && method === 'GET') { | ||
| return json(200, { ok: true, timestamp: new Date().toISOString() }); | ||
|
|
@@ -18,7 +21,51 @@ export const handler = async (event: any): Promise<APIGatewayProxyResult> => { | |
| // >>> ROUTES-START (do not remove this marker) | ||
| // CLI-generated routes will be inserted here | ||
|
|
||
| // GET /{userId} (dev server strips /users prefix) | ||
|
|
||
| // GET /users | ||
| if ((normalizedPath === '/users' || normalizedPath === '' || normalizedPath === '/') && method === 'GET') { | ||
| // TODO: Add your business logic here | ||
| const queryParams = event.queryStringParameters || {}; | ||
| const page = queryParams.page ? parseInt(queryParams.page, 10) : null; | ||
| const limit = queryParams.limit ? parseInt(queryParams.limit, 10) : null; | ||
|
|
||
| if (page && limit) { | ||
| const offset = (page - 1) * limit; | ||
|
|
||
| const totalCount = await db | ||
| .selectFrom('branch.users') | ||
| .select(db.fn.count('user_id').as('count')) | ||
| .executeTakeFirst(); | ||
|
|
||
| const totalUsers = Number(totalCount?.count || 0); | ||
| const totalPages = Math.ceil(totalUsers / limit); | ||
|
|
||
| const users = await db | ||
| .selectFrom('branch.users') | ||
| .selectAll() | ||
mehanana marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| .limit(limit) | ||
| .offset(offset) | ||
| .execute(); | ||
| return json(200, { | ||
| users, | ||
| pagination: { | ||
| page, | ||
| limit, | ||
| totalUsers, | ||
| totalPages | ||
| } | ||
| }); | ||
| } | ||
|
|
||
| const users = await db | ||
| .selectFrom('branch.users') | ||
| .selectAll() | ||
| .execute(); | ||
|
|
||
| console.log(users); | ||
| return json(200, { users }); | ||
| } | ||
|
|
||
| if (normalizedPath.startsWith('/') && normalizedPath.split('/').length === 2 && method === 'GET') { | ||
nourshoreibah marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| const userId = normalizedPath.split('/')[1]; | ||
| if (!userId) return json(400, { message: 'userId is required' }); | ||
|
|
@@ -65,6 +112,7 @@ export const handler = async (event: any): Promise<APIGatewayProxyResult> => { | |
|
|
||
| return json(200, { ok: true, route: 'PATCH /users/{userId}', pathParams: { userId }, body: { email: updatedUser!.email, name: updatedUser!.name, isAdmin: updatedUser!.is_admin } }); | ||
| } | ||
|
|
||
| // <<< ROUTES-END | ||
|
|
||
| return json(404, { message: 'Not Found', path: normalizedPath, method }); | ||
|
|
@@ -85,4 +133,4 @@ function json(statusCode: number, body: unknown): APIGatewayProxyResult { | |
| }, | ||
| body: JSON.stringify(body) | ||
| }; | ||
| } | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| module.exports = { | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. wait why was i able to run jest tests without this
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. i got an error when i tried to test and it worked when i deleted it |
||
| preset: 'ts-jest', | ||
| testEnvironment: 'node', | ||
| testMatch: ['**/*.test.ts'], | ||
| }; | ||
Uh oh!
There was an error while loading. Please reload this page.