Skip to content

Commit 10036e1

Browse files
authored
Merge pull request #22 from Visitha2001/03-user-crud
03 user crud
2 parents 86c948c + d287eef commit 10036e1

9 files changed

Lines changed: 142 additions & 3 deletions

File tree

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
node_modules
22
.env
3-
logs
3+
logs.neon_local/

.neon_local/.branches

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"02-dockerization": {"branch_id": "br-shiny-bush-a1d092wo"}}
1+
{"02-dockerization": {"branch_id": "br-shiny-bush-a1d092wo"}, "03-user-crud": {"branch_id": "br-cool-salad-a1dmnbrl"}}

logs/combined.log

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,3 +294,74 @@
294294
{"level":"info","message":"::1 - - [20/Sep/2025:15:09:55 +0000] \"GET /health HTTP/1.1\" 200 191 \"-\" \"-\"","service":"acquisitions-api"}
295295
{"level":"info","message":"::1 - - [20/Sep/2025:15:10:26 +0000] \"GET /health HTTP/1.1\" 200 191 \"-\" \"-\"","service":"acquisitions-api"}
296296
{"level":"info","message":"::1 - - [20/Sep/2025:15:10:56 +0000] \"GET /health HTTP/1.1\" 200 191 \"-\" \"-\"","service":"acquisitions-api"}
297+
{"level":"info","message":"Fetching all users","service":"acquisitions-api"}
298+
{"level":"error","message":"Error fetching all users Maximum call stack size exceeded","service":"acquisitions-api","stack":"RangeError: Maximum call stack size exceeded\n at Array.values (<anonymous>)\n at file:///app/node_modules/drizzle-orm/utils.js:53:40\n at Array.reduce (<anonymous>)\n at orderSelectedFields (file:///app/node_modules/drizzle-orm/utils.js:53:33)\n at file:///app/node_modules/drizzle-orm/utils.js:63:22\n at Array.reduce (<anonymous>)\n at orderSelectedFields (file:///app/node_modules/drizzle-orm/utils.js:53:33)\n at file:///app/node_modules/drizzle-orm/utils.js:63:22\n at Array.reduce (<anonymous>)\n at orderSelectedFields (file:///app/node_modules/drizzle-orm/utils.js:53:33)"}
299+
{"level":"error","message":"Error fetching all users Error fetching all users","service":"acquisitions-api","stack":"Error: Error fetching all users\n at getAllUsers (file:///app/src/services/user.service.js:16:15)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async getAllUsersController (file:///app/src/controllers/users.controller.js:7:26)"}
300+
{"level":"info","message":"::ffff:172.20.0.1 - - [20/Sep/2025:16:15:06 +0000] \"GET /api/users/ HTTP/1.1\" 500 351 \"-\" \"HTTPie\"","service":"acquisitions-api"}
301+
{"level":"info","message":"Fetching all users","service":"acquisitions-api"}
302+
{"level":"error","message":"Error fetching all users Maximum call stack size exceeded","service":"acquisitions-api","stack":"RangeError: Maximum call stack size exceeded\n at Array.values (<anonymous>)\n at file:///app/node_modules/drizzle-orm/utils.js:53:40\n at Array.reduce (<anonymous>)\n at orderSelectedFields (file:///app/node_modules/drizzle-orm/utils.js:53:33)\n at file:///app/node_modules/drizzle-orm/utils.js:63:22\n at Array.reduce (<anonymous>)\n at orderSelectedFields (file:///app/node_modules/drizzle-orm/utils.js:53:33)\n at file:///app/node_modules/drizzle-orm/utils.js:63:22\n at Array.reduce (<anonymous>)\n at orderSelectedFields (file:///app/node_modules/drizzle-orm/utils.js:53:33)"}
303+
{"level":"error","message":"Error fetching all users Error fetching all users","service":"acquisitions-api","stack":"Error: Error fetching all users\n at getAllUsers (file:///app/src/services/user.service.js:16:15)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async getAllUsersController (file:///app/src/controllers/users.controller.js:7:26)"}
304+
{"level":"info","message":"::ffff:172.20.0.1 - - [20/Sep/2025:16:15:24 +0000] \"GET /api/users HTTP/1.1\" 500 351 \"-\" \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36\"","service":"acquisitions-api"}
305+
{"level":"info","message":"::1 - - [20/Sep/2025:16:15:28 +0000] \"GET /health HTTP/1.1\" 200 189 \"-\" \"-\"","service":"acquisitions-api"}
306+
{"level":"info","message":"::1 - - [20/Sep/2025:16:15:58 +0000] \"GET /health HTTP/1.1\" 200 190 \"-\" \"-\"","service":"acquisitions-api"}
307+
{"level":"info","message":"::1 - - [20/Sep/2025:16:16:29 +0000] \"GET /health HTTP/1.1\" 200 189 \"-\" \"-\"","service":"acquisitions-api"}
308+
{"level":"info","message":"::1 - - [20/Sep/2025:16:16:59 +0000] \"GET /health HTTP/1.1\" 200 191 \"-\" \"-\"","service":"acquisitions-api"}
309+
{"level":"info","message":"::1 - - [20/Sep/2025:16:17:30 +0000] \"GET /health HTTP/1.1\" 200 191 \"-\" \"-\"","service":"acquisitions-api"}
310+
{"level":"info","message":"::1 - - [20/Sep/2025:16:18:38 +0000] \"GET /health HTTP/1.1\" 200 193 \"-\" \"-\"","service":"acquisitions-api"}
311+
{"level":"info","message":"::1 - - [20/Sep/2025:16:19:10 +0000] \"GET /health HTTP/1.1\" 200 187 \"-\" \"-\"","service":"acquisitions-api"}
312+
{"level":"info","message":"Fetching all users","service":"acquisitions-api"}
313+
{"level":"info","message":"::ffff:172.21.0.1 - - [20/Sep/2025:16:19:20 +0000] \"GET /api/users/ HTTP/1.1\" 200 822 \"-\" \"HTTPie\"","service":"acquisitions-api"}
314+
{"level":"info","message":"::1 - - [20/Sep/2025:16:19:40 +0000] \"GET /health HTTP/1.1\" 200 190 \"-\" \"-\"","service":"acquisitions-api"}
315+
{"level":"info","message":"::1 - - [20/Sep/2025:16:20:00 +0000] \"GET /health HTTP/1.1\" 200 194 \"-\" \"-\"","service":"acquisitions-api"}
316+
{"level":"info","message":"Fetching all users","service":"acquisitions-api"}
317+
{"level":"info","message":"::ffff:172.20.0.1 - - [20/Sep/2025:16:20:13 +0000] \"GET /api/users/ HTTP/1.1\" 200 822 \"-\" \"HTTPie\"","service":"acquisitions-api"}
318+
{"level":"info","message":"::1 - - [20/Sep/2025:16:20:30 +0000] \"GET /health HTTP/1.1\" 200 190 \"-\" \"-\"","service":"acquisitions-api"}
319+
{"level":"info","message":"::1 - - [20/Sep/2025:16:22:23 +0000] \"GET /health HTTP/1.1\" 200 194 \"-\" \"-\"","service":"acquisitions-api"}
320+
{"level":"info","message":"::1 - - [20/Sep/2025:16:22:53 +0000] \"GET /health HTTP/1.1\" 200 195 \"-\" \"-\"","service":"acquisitions-api"}
321+
{"level":"info","message":"Fetching all users","service":"acquisitions-api"}
322+
{"level":"info","message":"::ffff:172.20.0.1 - - [20/Sep/2025:16:23:14 +0000] \"GET /api/users/ HTTP/1.1\" 200 822 \"-\" \"HTTPie\"","service":"acquisitions-api"}
323+
{"level":"info","message":"::1 - - [20/Sep/2025:16:23:24 +0000] \"GET /health HTTP/1.1\" 200 190 \"-\" \"-\"","service":"acquisitions-api"}
324+
{"level":"info","message":"Fetching all users","service":"acquisitions-api"}
325+
{"level":"info","message":"::ffff:172.20.0.1 - - [20/Sep/2025:16:23:40 +0000] \"GET /api/users HTTP/1.1\" 200 822 \"-\" \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36\"","service":"acquisitions-api"}
326+
{"level":"info","message":"::1 - - [20/Sep/2025:16:23:55 +0000] \"GET /health HTTP/1.1\" 200 190 \"-\" \"-\"","service":"acquisitions-api"}
327+
{"level":"info","message":"::1 - - [20/Sep/2025:16:24:26 +0000] \"GET /health HTTP/1.1\" 200 191 \"-\" \"-\"","service":"acquisitions-api"}
328+
{"level":"info","message":"::1 - - [20/Sep/2025:16:24:57 +0000] \"GET /health HTTP/1.1\" 200 191 \"-\" \"-\"","service":"acquisitions-api"}
329+
{"level":"info","message":"::1 - - [20/Sep/2025:16:25:27 +0000] \"GET /health HTTP/1.1\" 200 191 \"-\" \"-\"","service":"acquisitions-api"}
330+
{"level":"info","message":"::1 - - [20/Sep/2025:16:25:57 +0000] \"GET /health HTTP/1.1\" 200 191 \"-\" \"-\"","service":"acquisitions-api"}
331+
{"level":"error","message":"Error while creating user User with this email already exists","service":"acquisitions-api","stack":"Error: User with this email already exists\n at createUser (file:///app/src/services/auth.service.js:29:19)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async singup (file:///app/src/controllers/auth.controller.js:19:22)"}
332+
{"level":"error","message":"Error in singup Error while creating user","service":"acquisitions-api","stack":"Error: Error while creating user\n at createUser (file:///app/src/services/auth.service.js:48:15)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async singup (file:///app/src/controllers/auth.controller.js:19:22)"}
333+
{"level":"info","message":"::ffff:172.20.0.1 - - [20/Sep/2025:16:26:27 +0000] \"POST /api/auth/sign-up HTTP/1.1\" 500 422 \"-\" \"HTTPie\"","service":"acquisitions-api"}
334+
{"level":"info","message":"::1 - - [20/Sep/2025:16:26:28 +0000] \"GET /health HTTP/1.1\" 200 191 \"-\" \"-\"","service":"acquisitions-api"}
335+
{"level":"error","message":"Error while creating user User with this email already exists","service":"acquisitions-api","stack":"Error: User with this email already exists\n at createUser (file:///app/src/services/auth.service.js:29:19)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async singup (file:///app/src/controllers/auth.controller.js:19:22)"}
336+
{"level":"error","message":"Error in singup Error while creating user","service":"acquisitions-api","stack":"Error: Error while creating user\n at createUser (file:///app/src/services/auth.service.js:48:15)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async singup (file:///app/src/controllers/auth.controller.js:19:22)"}
337+
{"level":"info","message":"::ffff:172.20.0.1 - - [20/Sep/2025:16:26:55 +0000] \"POST /api/auth/sign-up HTTP/1.1\" 500 422 \"-\" \"HTTPie\"","service":"acquisitions-api"}
338+
{"level":"error","message":"Error while creating user User with this email already exists","service":"acquisitions-api","stack":"Error: User with this email already exists\n at createUser (file:///app/src/services/auth.service.js:29:19)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async singup (file:///app/src/controllers/auth.controller.js:19:22)"}
339+
{"level":"error","message":"Error in singup Error while creating user","service":"acquisitions-api","stack":"Error: Error while creating user\n at createUser (file:///app/src/services/auth.service.js:48:15)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async singup (file:///app/src/controllers/auth.controller.js:19:22)"}
340+
{"level":"info","message":"::ffff:172.20.0.1 - - [20/Sep/2025:16:26:57 +0000] \"POST /api/auth/sign-up HTTP/1.1\" 500 422 \"-\" \"HTTPie\"","service":"acquisitions-api"}
341+
{"level":"info","message":"::1 - - [20/Sep/2025:16:26:58 +0000] \"GET /health HTTP/1.1\" 200 191 \"-\" \"-\"","service":"acquisitions-api"}
342+
{"level":"info","message":"::1 - - [20/Sep/2025:16:27:28 +0000] \"GET /health HTTP/1.1\" 200 191 \"-\" \"-\"","service":"acquisitions-api"}
343+
{"level":"info","message":"::1 - - [20/Sep/2025:16:27:59 +0000] \"GET /health HTTP/1.1\" 200 191 \"-\" \"-\"","service":"acquisitions-api"}
344+
{"level":"info","message":"::1 - - [20/Sep/2025:16:28:29 +0000] \"GET /health HTTP/1.1\" 200 191 \"-\" \"-\"","service":"acquisitions-api"}
345+
{"level":"info","message":"::1 - - [20/Sep/2025:16:28:59 +0000] \"GET /health HTTP/1.1\" 200 191 \"-\" \"-\"","service":"acquisitions-api"}
346+
{"level":"info","message":"::1 - - [20/Sep/2025:16:29:30 +0000] \"GET /health HTTP/1.1\" 200 191 \"-\" \"-\"","service":"acquisitions-api"}
347+
{"level":"info","message":"::1 - - [20/Sep/2025:16:30:00 +0000] \"GET /health HTTP/1.1\" 200 191 \"-\" \"-\"","service":"acquisitions-api"}
348+
{"level":"info","message":"::1 - - [20/Sep/2025:16:30:30 +0000] \"GET /health HTTP/1.1\" 200 191 \"-\" \"-\"","service":"acquisitions-api"}
349+
{"level":"info","message":"::1 - - [20/Sep/2025:16:34:55 +0000] \"GET /health HTTP/1.1\" 200 193 \"-\" \"-\"","service":"acquisitions-api"}
350+
{"level":"info","message":"User created successfully : jonty@example.com","service":"acquisitions-api"}
351+
{"level":"info","message":"user registered successfully : jonty@example.com","service":"acquisitions-api"}
352+
{"level":"info","message":"::ffff:172.20.0.1 - - [20/Sep/2025:16:34:57 +0000] \"POST /api/auth/sign-up HTTP/1.1\" 201 108 \"-\" \"HTTPie\"","service":"acquisitions-api"}
353+
{"level":"info","message":"Fetching all users","service":"acquisitions-api"}
354+
{"level":"info","message":"::ffff:172.20.0.1 - - [20/Sep/2025:16:35:04 +0000] \"GET /api/users/ HTTP/1.1\" 200 968 \"-\" \"HTTPie\"","service":"acquisitions-api"}
355+
{"level":"info","message":"::1 - - [20/Sep/2025:16:35:54 +0000] \"GET /health HTTP/1.1\" 200 194 \"-\" \"-\"","service":"acquisitions-api"}
356+
{"level":"info","message":"Fetching all users","service":"acquisitions-api"}
357+
{"level":"info","message":"::ffff:172.21.0.1 - - [20/Sep/2025:16:35:59 +0000] \"GET /api/users/ HTTP/1.1\" 200 64 \"-\" \"HTTPie\"","service":"acquisitions-api"}
358+
{"level":"info","message":"User created successfully : jonty@example.com","service":"acquisitions-api"}
359+
{"level":"info","message":"user registered successfully : jonty@example.com","service":"acquisitions-api"}
360+
{"level":"info","message":"::ffff:172.21.0.1 - - [20/Sep/2025:16:36:11 +0000] \"POST /api/auth/sign-up HTTP/1.1\" 201 108 \"-\" \"HTTPie\"","service":"acquisitions-api"}
361+
{"level":"info","message":"::1 - - [20/Sep/2025:16:36:24 +0000] \"GET /health HTTP/1.1\" 200 188 \"-\" \"-\"","service":"acquisitions-api"}
362+
{"level":"info","message":"User created successfully : visitha2001@gmail.com","service":"acquisitions-api"}
363+
{"level":"info","message":"user registered successfully : visitha2001@gmail.com","service":"acquisitions-api"}
364+
{"level":"info","message":"::ffff:172.21.0.1 - - [20/Sep/2025:16:36:32 +0000] \"POST /api/auth/sign-up HTTP/1.1\" 201 115 \"-\" \"HTTPie\"","service":"acquisitions-api"}
365+
{"level":"info","message":"Fetching all users","service":"acquisitions-api"}
366+
{"level":"info","message":"::ffff:172.21.0.1 - - [20/Sep/2025:16:36:35 +0000] \"GET /api/users/ HTTP/1.1\" 200 362 \"-\" \"HTTPie\"","service":"acquisitions-api"}
367+
{"level":"info","message":"::1 - - [20/Sep/2025:16:36:54 +0000] \"GET /health HTTP/1.1\" 200 190 \"-\" \"-\"","service":"acquisitions-api"}

logs/error.lg

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,13 @@
5454
{"level":"error","message":"Error in singup Error while creating user","service":"acquisitions-api","stack":"Error: Error while creating user\n at createUser (file:///D:/DevOps-HandsOn/Acquisitions/src/services/auth.service.js:48:15)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async singup (file:///D:/DevOps-HandsOn/Acquisitions/src/controllers/auth.controller.js:19:22)"}
5555
{"level":"error","message":"Error while creating user User with this email already exists","service":"acquisitions-api","stack":"Error: User with this email already exists\n at createUser (file:///app/src/services/auth.service.js:29:19)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async singup (file:///app/src/controllers/auth.controller.js:19:22)"}
5656
{"level":"error","message":"Error in singup Error while creating user","service":"acquisitions-api","stack":"Error: Error while creating user\n at createUser (file:///app/src/services/auth.service.js:48:15)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async singup (file:///app/src/controllers/auth.controller.js:19:22)"}
57+
{"level":"error","message":"Error fetching all users Maximum call stack size exceeded","service":"acquisitions-api","stack":"RangeError: Maximum call stack size exceeded\n at Array.values (<anonymous>)\n at file:///app/node_modules/drizzle-orm/utils.js:53:40\n at Array.reduce (<anonymous>)\n at orderSelectedFields (file:///app/node_modules/drizzle-orm/utils.js:53:33)\n at file:///app/node_modules/drizzle-orm/utils.js:63:22\n at Array.reduce (<anonymous>)\n at orderSelectedFields (file:///app/node_modules/drizzle-orm/utils.js:53:33)\n at file:///app/node_modules/drizzle-orm/utils.js:63:22\n at Array.reduce (<anonymous>)\n at orderSelectedFields (file:///app/node_modules/drizzle-orm/utils.js:53:33)"}
58+
{"level":"error","message":"Error fetching all users Error fetching all users","service":"acquisitions-api","stack":"Error: Error fetching all users\n at getAllUsers (file:///app/src/services/user.service.js:16:15)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async getAllUsersController (file:///app/src/controllers/users.controller.js:7:26)"}
59+
{"level":"error","message":"Error fetching all users Maximum call stack size exceeded","service":"acquisitions-api","stack":"RangeError: Maximum call stack size exceeded\n at Array.values (<anonymous>)\n at file:///app/node_modules/drizzle-orm/utils.js:53:40\n at Array.reduce (<anonymous>)\n at orderSelectedFields (file:///app/node_modules/drizzle-orm/utils.js:53:33)\n at file:///app/node_modules/drizzle-orm/utils.js:63:22\n at Array.reduce (<anonymous>)\n at orderSelectedFields (file:///app/node_modules/drizzle-orm/utils.js:53:33)\n at file:///app/node_modules/drizzle-orm/utils.js:63:22\n at Array.reduce (<anonymous>)\n at orderSelectedFields (file:///app/node_modules/drizzle-orm/utils.js:53:33)"}
60+
{"level":"error","message":"Error fetching all users Error fetching all users","service":"acquisitions-api","stack":"Error: Error fetching all users\n at getAllUsers (file:///app/src/services/user.service.js:16:15)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async getAllUsersController (file:///app/src/controllers/users.controller.js:7:26)"}
61+
{"level":"error","message":"Error while creating user User with this email already exists","service":"acquisitions-api","stack":"Error: User with this email already exists\n at createUser (file:///app/src/services/auth.service.js:29:19)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async singup (file:///app/src/controllers/auth.controller.js:19:22)"}
62+
{"level":"error","message":"Error in singup Error while creating user","service":"acquisitions-api","stack":"Error: Error while creating user\n at createUser (file:///app/src/services/auth.service.js:48:15)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async singup (file:///app/src/controllers/auth.controller.js:19:22)"}
63+
{"level":"error","message":"Error while creating user User with this email already exists","service":"acquisitions-api","stack":"Error: User with this email already exists\n at createUser (file:///app/src/services/auth.service.js:29:19)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async singup (file:///app/src/controllers/auth.controller.js:19:22)"}
64+
{"level":"error","message":"Error in singup Error while creating user","service":"acquisitions-api","stack":"Error: Error while creating user\n at createUser (file:///app/src/services/auth.service.js:48:15)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async singup (file:///app/src/controllers/auth.controller.js:19:22)"}
65+
{"level":"error","message":"Error while creating user User with this email already exists","service":"acquisitions-api","stack":"Error: User with this email already exists\n at createUser (file:///app/src/services/auth.service.js:29:19)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async singup (file:///app/src/controllers/auth.controller.js:19:22)"}
66+
{"level":"error","message":"Error in singup Error while creating user","service":"acquisitions-api","stack":"Error: Error while creating user\n at createUser (file:///app/src/services/auth.service.js:48:15)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async singup (file:///app/src/controllers/auth.controller.js:19:22)"}

src/App.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import cors from 'cors';
66
import cookieParser from 'cookie-parser';
77
import securityMiddleware from '#middleware/security.middleware.js';
88
import authRoutes from '#routes/auth.routes.js';
9+
import userRoutes from '#routes/user.routes.js';
910

1011
const app = express();
1112

@@ -36,5 +37,6 @@ app.get('/api', (req, res) => {
3637
});
3738

3839
app.use('/api/auth', authRoutes);
40+
app.use('/api/users', userRoutes);
3941

4042
export default app;

0 commit comments

Comments
 (0)