diff --git a/src/handler/user/user.router.ts b/src/handler/user/user.router.ts index 4ec56123235e46df1fb3f635e3ba20025389f35d..2702ca9e05402acb4e50eb8a521ecf53a5fb3f8b 100644 --- a/src/handler/user/user.router.ts +++ b/src/handler/user/user.router.ts @@ -68,3 +68,12 @@ UserRouter.post('/balance', async (request: Request, response: Response) => { return response.status(500).json(error.message); } }) + +UserRouter.get('/user-detail/:username', async (request: Request, response: Response) => { + try { + const userData = await UserServices.getUserByUsername(request.params.username); + return response.status(200).json(userData); + } catch (error: any) { + return response.status(500).json(error.message); + } +}) diff --git a/src/handler/user/user.service.ts b/src/handler/user/user.service.ts index 1ed8480e4d8396627f61127eef8823b03a29a78f..c20a5e1e1df5309fcb477f921c1c91b7b6afea60 100644 --- a/src/handler/user/user.service.ts +++ b/src/handler/user/user.service.ts @@ -1,4 +1,5 @@ import { User } from "../../interfaces/User"; +import { UserDetail } from "../../interfaces/UserDetail"; import {db} from "../../utils/db.server" type queryResult = User | null; @@ -98,3 +99,23 @@ export async function topup(username : string, topupBalance : number) { } return responseString; } + +export async function getUserByUsername(username : string) { + const userDetail : UserDetail | null = await db.user.findFirst({ + where:{ + username : username, + }, + select: { + username : true, + name : true, + email : true, + saldo : true + } + }) + + if(userDetail === null) { + throw "error"; + } + + return userDetail; +} diff --git a/src/interfaces/UserDetail.ts b/src/interfaces/UserDetail.ts new file mode 100644 index 0000000000000000000000000000000000000000..8934888969e3f1cbd9babb3a82b6340076d21ca4 --- /dev/null +++ b/src/interfaces/UserDetail.ts @@ -0,0 +1,7 @@ + +export interface UserDetail { + username : string + name : string + email : string + saldo : number +} \ No newline at end of file