diff --git a/src/handler/history/history.service.ts b/src/handler/history/history.service.ts index 4dacade8f2bed6a9ce2c2450d5a430a82ee580ce..357001aa523acfe5ac87adfff946095fdd2e337c 100644 --- a/src/handler/history/history.service.ts +++ b/src/handler/history/history.service.ts @@ -2,7 +2,7 @@ import { History } from "../../interfaces/History"; import { HistoryDetail } from "../../interfaces/HistoryDetail"; import {db} from "../../utils/db.server" -export const getHistory = async (): Promise<History[]> => { +export async function getHistory () : Promise<History[]> { const user_id = 2; //ini buat temp aja karena auth belom dibuat return db.history.findMany({ where:{ @@ -18,7 +18,7 @@ export const getHistory = async (): Promise<History[]> => { }) } -export const getHistoryDetail = async (historyId: number): Promise<HistoryDetail[]> => { +export async function getHistoryDetail (historyId: number) : Promise<HistoryDetail[]> { return db.historyDetail.findMany({ where:{ history_id: historyId diff --git a/src/handler/user/user.router.ts b/src/handler/user/user.router.ts index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f452f3f4cb086f4805561e936653eaf590d0a18d 100644 --- a/src/handler/user/user.router.ts +++ b/src/handler/user/user.router.ts @@ -0,0 +1,51 @@ +import { User } from "../../interfaces/User"; +import express from "express"; +import type { Request, Response } from "express"; + +import * as UserServices from './user.service' + +export const UserRouter = express.Router() + +UserRouter.post('/checkUsername', async (request: Request, response: Response) => { + try { + const responseString= await UserServices.checkUsername(request.body.username); + return response.status(200).json(responseString); + } catch (error: any) { + return response.status(500).json(error.message); + } +}) + +UserRouter.post('/checkEmail', async (request: Request, response: Response) => { + try { + const responseString= await UserServices.checkEmail(request.body.email); + return response.status(200).json(responseString); + } catch (error: any) { + return response.status(500).json(error.message); + } +}) + +UserRouter.post('/register', async (request: Request, response: Response) => { + try { + const user : User = { + id : 0, + username : request.body.username, + name : request.body.name, + email : request.body.email, + password : request.body.password, + saldo : 0, + }; + const responseString= await UserServices.register(user); + return response.status(200).json(responseString); + } catch (error: any) { + return response.status(500).json(error.message); + } +}) + +UserRouter.post('/validateLogin', async (request: Request, response: Response) => { + try { + const responseString= await UserServices.validateLogin(request.body.username, request.body.password); + return response.status(200).json(responseString); + } 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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0907573ce229d1f9284cf463e3fabacc9b4507f5 100644 --- a/src/handler/user/user.service.ts +++ b/src/handler/user/user.service.ts @@ -0,0 +1,59 @@ +import { User } from "../../interfaces/User"; +import {db} from "../../utils/db.server" + +type queryResult = User | null; + +export async function checkUsername(username : string) { + const result : queryResult = await db.user.findFirst({ + where: { + username : username + } + }); + const responseString = !result ? "available" : "exist"; + return responseString; +} + +export async function checkEmail(email : string) { + const result : queryResult = await db.user.findFirst({ + where: { + email : email + } + }); + const responseString = !result ? "available" : "exist"; + return responseString; +} + +export async function register(user : User) { + let responseString = "success"; + try { + const result : User = await db.user.create({ + data : { + username : user.username, + name : user.name, + email : user.email, + password : user.password, + } + }) + }catch (err) { + const usernameAvailable = await checkUsername(user.username); + const emailAvailable = await checkEmail(user.email); + if(usernameAvailable === "exist") { + responseString = "username already exist"; + }else if(emailAvailable === "exist") { + responseString = "email already exist"; + }else { + responseString = "failed"; + } + } + return responseString; +} + +export async function validateLogin(username : string, password : string) { + const result : queryResult = await db.user.findFirst({ + where: { + username : username + } + }); + const responseString = (password === result?.password) ? "success" : "failed"; + return responseString; +} \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 8340e8f7e5ce1197519d7845ad453715889dc642..b8d1840d7578ab1639fcac42b29490598cce030d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,11 +1,14 @@ import express, {Express, Request, Response} from "express"; import { HistoryRouter } from "./handler/history/history.router"; +import { UserRouter } from "./handler/user/user.router"; const app = express(); const port = 5000; +app.use(express.json()); app.use('/history', HistoryRouter); +app.use('/user', UserRouter); app.get("/", (req, res) => { res.send("test get home"); }) diff --git a/src/interfaces/User.ts b/src/interfaces/User.ts new file mode 100644 index 0000000000000000000000000000000000000000..d95d48832cd3ac9e52c8fb993c03c69f373882f6 --- /dev/null +++ b/src/interfaces/User.ts @@ -0,0 +1,9 @@ + +export interface User { + id : number, + username : string, + name : string, + email : string, + password : string, + saldo : number, +} \ No newline at end of file