From d05e03fe6fbde3f845a373b863aa0d193276d1c9 Mon Sep 17 00:00:00 2001
From: DewanaGustavus <76590469+DewanaGustavus@users.noreply.github.com>
Date: Wed, 15 Nov 2023 14:37:07 +0700
Subject: [PATCH] refactor: validate before register

---
 src/handler/user/user.service.ts | 24 +++++++++++++++---------
 1 file changed, 15 insertions(+), 9 deletions(-)

diff --git a/src/handler/user/user.service.ts b/src/handler/user/user.service.ts
index d76009c..76edeb4 100644
--- a/src/handler/user/user.service.ts
+++ b/src/handler/user/user.service.ts
@@ -4,6 +4,7 @@ import {db} from "../../utils/db.server"
 type queryResult = User | null;
 
 export async function checkUsername(username : string) {
+    // TODO : SQL is using case insensitive comparison
     const result : queryResult = await db.user.findFirst({
         where: {
             username : username
@@ -25,6 +26,19 @@ export async function checkEmail(email : string) {
 
 export async function register(user : User) {
     let responseString = "";
+    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";
+    }
+    
+    if(responseString !== "") {
+        return responseString;   
+    }
+
     try {
         const result : User = await db.user.create({
             data : {
@@ -36,15 +50,7 @@ export async function register(user : User) {
         })
         responseString = "success";
     }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";
-        }
+        responseString = "failed";
     }
     return responseString;
 }
-- 
GitLab