From 0d3e7e8e177e7a45fa38d5e00127b7b9ff7704e2 Mon Sep 17 00:00:00 2001
From: apsr23 <apsr23@inf.ufpr.br>
Date: Tue, 18 Mar 2025 10:49:21 -0300
Subject: [PATCH] Issue #6 ADD read user route

---
 src/handlers/user.ts | 27 ++++++++++++++++++++++++++-
 src/index.ts         |  3 ++-
 2 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/src/handlers/user.ts b/src/handlers/user.ts
index 1b8651e..02b1ac8 100644
--- a/src/handlers/user.ts
+++ b/src/handlers/user.ts
@@ -1,7 +1,7 @@
 import { type Request, type Response } from 'express';
 import { userSchema } from "@/validators/userValidator";
 import { db } from "@/db";
-import { eq } from 'drizzle-orm';
+import { or, eq } from 'drizzle-orm';
 import { usersTable } from "@/db/schema";
 import bcrypt from "bcryptjs"; 
 import { z } from 'zod';
@@ -109,3 +109,28 @@ export const createUser = async (req: Request, res: Response) => {
       return res.status(500).json({ error: "Erro ao inserir o usuário. Por favor, tente novamente mais tarde." });
     }
   };
+
+  export const readUser = async (req: Request, res: Response) => {
+    try {
+      
+      const { id, nome } = req.params; //extracao da requisicao
+
+      const parsedData = userSchema.safeParse({ id, nome });
+  
+      if (!parsedData.success) {
+        return res.status(400).json({ error: "Dados Inválidos", details: parsedData.error.errors });}
+       
+      const result = await db.select().from(usersTable).where(or(eq(usersTable.id, id), eq(usersTable.nome, nome))).limit(1);
+
+      if (result.length === 0) { //array vazio
+        return res.status(404).json({ error: "Usuário não encontrado" });
+      }
+
+      delete result[0].password;
+
+      return res.status(200).json(result[0]);
+    } catch (error) {
+      console.error(error);
+      return res.status(500).json({ error: "Erro ao buscar o usuário. Por favor, tente novamente mais tarde." });
+    }
+  }    
\ No newline at end of file
diff --git a/src/index.ts b/src/index.ts
index 9e649ea..b062d03 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,6 +1,6 @@
 import express, { urlencoded, json } from 'express'
 import dotenv from 'dotenv'
-import { createUser } from './handlers/user';
+import { createUser, readUser } from './handlers/user';
 import Implant from '@/handlers/implants'
 import { Auth } from '@/middleware/auth'
 
@@ -15,6 +15,7 @@ app.use(json())
 
 // Rotas de usuário
 app.post('/addUser', createUser)
+app.get('/getUser', readUser)
 
 // Definir a porta e iniciar o servidor
 const PORT = process.env['PORT'] || 3000
-- 
GitLab