├── src/
│ ├── application/
│ │ ├── {name}.service.ts
│ ├── domain/
│ │ ├── model/
│ │ │ ├── {name}.ts
│ │ ├── ports/
│ │ │ ├── inbound/
│ │ │ │ ├── {name}.service.ts
│ │ │ ├── outbound/
│ │ │ │ ├── {name}.repository.ts
│ ├── infrastructure/
│ │ ├── {name}.repository.ts
│ ├── interface/
│ │ ├── dto/
│ │ ├── validator/
│ │ ├── {name}.controller.ts
│ ├── main.ts
- application คือ ส่วนกลางของการจัดการด้าน Bussiness Logic ต่างๆ ที่ใช้ประมวลผลกับส่วนงานอื่นๆ ตั้งเเต่การนำข้อมูลเข้าเเละนำออกไป โดยหลัการสร้างไฟล์สำหรับการทำงานนั้นจะขึ้นต้นด้วยหน้าที่ของงาน เเละต่อท้ายด้วย .service.ts เสมอ ยกตัวอย่างเช่น users.service.ts
- domain คือ การกำหนดประเภขของข้อมูลเเละฟังก์ชันที่อนุญาตให้ใช้งาน สามารถกำหนดรูปเเบบข้อมูล การรับค่าผ่านฟังก์ชัน เเละการส่งข้อมูลกลับ เพื่อให้สามารถปรับการใช้งานได้ถูกต้อง เหมือนกันทั้งหมดที่มีการนำไปปรับใช้กับ application, infrastructure
- model คือ การกำหนดรูปเเบบของข้อมูลที่ใช้ในการรับเเละส่ง ไปยังส่วนต่างๆ ที่ทำงานร่วมกับ application
- ports คือ การกำหนดรูปเเบบฟังก์ชันสำหรับเรียกใช้งานในส่วนของ application(inbound), infrastructure(outbound) เพื่อให้การนำไปใช้งานได้ถูกต้องเเละตรงกับ spec ที่เราตั้งไว้เพื่อให้ช่องทางการสื่อสารได้ชัดเจน
- infrastructure คือ เป็นส่วนเบื้องหลังของการเชื่อมต่อกับ external resource ต่างๆ เช่น database, queue, http เป็นต้น ซึ่งทำให้ง่ายต่อการสับเปลี่ยนเครื่องมื่อได้ง่าย เพราะรูปเเบบฟังก์ชันการทำงานถูกกำหนดตาม deomin/outbound เราปรับใช้งานให้ตรงก็เพียงพอเเล้ว โดยหลัการสร้างไฟล์สำหรับการทำงานนั้นจะขึ้นต้นด้วยหน้าที่ของงาน เเละต่อท้ายด้วย .repository.ts เสมอ ยกตัวอย่างเช่น users.repository.ts หรือ users.mongodb.repository.ts
- interface คือ เป็นส่วนงานเบื้องหน้า เเละทำหน้าที่เป็น Presentation Layer สำหรับแปลงชุดข้อมูลได้จากรับมาเเละส่งข้อมูลไปยังผู้ใช้งาน สามารถปรับใช้งานได้หลากหลาย ตั้งเเต่การกำหนด http handler, path, body สำหรับรับข้อมูล เเละการ validate ข้อมูล โดยหลัการสร้างไฟล์สำหรับการทำงานนั้นจะขึ้นต้นด้วยหน้าที่ของงาน เเละต่อท้ายด้วย .controller.ts เสมอ ยกตัวอย่างเช่น users.controller.ts หรือ users.controller.ts
- dto คือ ส่วนของการกำหนดชุดข้อมูล body เเละการกำหนด validate ของข้อมูลที่ได้จาก http
- validator คือ ส่วนของการ custom validation ที่ไม่มีให้ต้องการใช้ในเเบบของตัวเอง
เราใช้รูปเเบบ Kebab Case ซึ่งเป็นการเขียนคำประสมด้วยอักษรตัวพิมพ์เล็กและแยกคำเหล่านั้นด้วยเครื่องหมายขีดกลาง ("-")
ยกตัวอย่าง
users.controller.ts
user-registers.controller.ts