tatuga-camp / client-main-tatugaschool

1 stars 0 forks source link

Create Auth & User Service #4

Closed permlap-phola closed 2 months ago

permlap-phola commented 2 months ago

ทำ service

  1. auth service
  2. user service
permlap-phola commented 2 months ago

@ChunWarayut @warodompom checkout branch นี้ แล้วเริ่มทำ auth service กับ user service ก่อนนะครับ ขอก่อนวันอังคาร

ChunWarayut commented 2 months ago

เรียบร้อยครับ @permlap-phola

ChunWarayut commented 2 months ago

มันว่าแบบผมมัน clean กว่า

เมื่อ อ. 27 ส.ค. 2024 เวลา 01:24 Permlap Phola @.***> เขียนว่า:

@.**** commented on this pull request.

In services/user.ts https://github.com/tatuga-camp/client-main-tatugaschool/pull/4#discussion_r1731631254 :

+type ResponseGetMeService = {

  • id: string;
  • createAt: string;
  • updateAt: string;
  • firstName: string;
  • lastName: string;
  • email: string;
  • phone: string;
  • photo: string;
  • role: string;
  • createBySchoolId: string | null;
  • isVerifyEmail: boolean;
  • lastActiveAt: string;
  • isResetPassword: boolean;
  • provider: string;
  • isDeleted: boolean;
  • deleteAt: string | null;
  • };

import User interface มา น่าจะโอเคกว่านะครับ อุส่าเขียน user interface ไว่รอแล้ว

In services/auth.ts https://github.com/tatuga-camp/client-main-tatugaschool/pull/4#discussion_r1731631797 :

+type ResponseSignUpService = {

  • id: string;
  • createAt: string;
  • updateAt: string;
  • firstName: string;
  • lastName: string;
  • email: string;
  • phone: string;
  • role: string;
  • isVerifyEmail: boolean;
  • verifyEmailToken?: string;
  • verifyEmailTokenExpiresAt?: string;
  • lastActiveAt: string;
  • isResetPassword: boolean;
  • provider: string;
  • deleteAt?: string;
  • resetPasswordToken?: string;
  • resetPasswordTokenExpiresAt?: string; +};

Import User interface

In services/auth.ts https://github.com/tatuga-camp/client-main-tatugaschool/pull/4#discussion_r1731638004 :

@@ -13,20 +21,225 @@ export async function SignInService( input: RequestSignInService ): Promise { try {

  • const user = await axios({
  • method: "POST",
  • url: ${process.env.NEXT_PUBLIC_SERVER_URL}/v1/auth/sign-in,
  • data: {
  • ...input,
  • },
  • headers: {
  • "Content-Type": "application/json",
  • },
  • responseType: "json",
  • const response = await axios.post("/v1/auth/sign-in", { ...input });

ผมแนะนำให้เขีนยแบบนี้น่าจะ โอเคกว่าในการจัดการ service เพราะมันเห็น structure ของของมูลที่เราจะส่งผ่านแบบชัดเจน ว่าเป็น data หรือ param

const user = await axios({ method: "POST", data: { ...input, }, headers: { "Content-Type": "application/json", }, responseType: "json", });

— Reply to this email directly, view it on GitHub https://github.com/tatuga-camp/client-main-tatugaschool/pull/4#pullrequestreview-2261316859, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHCESDLKQIPPIZQ5ZFYJRQLZTNXGBAVCNFSM6AAAAABM7XJPVWVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZDENRRGMYTMOBVHE . You are receiving this because you were mentioned.Message ID: @.***>

permlap-phola commented 2 months ago

ปัญหามันไม่ได้อยู่ที่ code ดู clean ครับ แต่ผมมองว่ามันจะทำให้การอ่านโค้ดง่ายขึ้น สมมุติว่า service นี้ ใช้ method post ต้องการ param ด้วย มันจะต้องเพิ่ม

axios.post("/v1/auth/sign-in", 
  { 
    email: 'example@example.com', 
    password: 'password123' 
  }, 
  {
    params: {
      lang: 'en',
      ref: '123'
    }
  }
);

แบบนี้มันอาจจะเกิดความสบสันของ data และ params ได้

await axios({
      method: "POST",
      data: {
        ...input,
      },
      params: {
      lang: 'en',
      ref: '123'
    }
    });

แบบนี้มันจะลดความสบสนได้ดีกว่าครับ แก้ตามนี้ได้เลย @ChunWarayut

ChunWarayut commented 2 months ago

resolved kub @permlap-phola