Section 6: Lab: PostgreSQL 18 และแนวคิด ORM
- รัน PostgreSQL 18 ด้วย Docker Compose พร้อม Volume
- แนวคิด ORM ข้อดีและข้อจำกัด เทียบกับการเขียน SQL เอง
- เชื่อมต่อ GORM กับ PostgreSQL และตั้งค่า Connection Pool
- เปิด Log ของ SQL เพื่อดูคำสั่งที่ GORM สร้างจริง
Section 7: Model, Schema และ Migration
- สร้าง Model ด้วย Struct และ GORM Tag
- Primary Key แบบตัวเลขหรือ UUID, Index และ Unique Constraint
- Soft Delete และฟิลด์เวลาสร้างและแก้ไขข้อมูล
- AutoMigrate สำหรับทดลอง เทียบกับ Migration ที่มีเวอร์ชันด้วย golang-migrate
- Lab: ออกแบบ Schema ของระบบร้านค้าและสร้าง Migration ชุดแรก
Section 8: Lab: CRUD ด้วย GORM Generics API
- รู้จัก Generics API แบบใหม่ gorm.G ที่ใช้ตั้งแต่ GORM 1.30
- Create, First, Find, Update และ Delete พร้อม context
- เงื่อนไขค้นหา, Pagination และ Sorting จาก Query String
- จัดการกรณีไม่พบข้อมูลด้วย ErrRecordNotFound
- Lab: API จัดการสินค้าแบบ CRUD ครบทุก Endpoint
Section 9: Relationship, Join และ Transaction
- Has One, Has Many, Belongs To และ Many to Many
- Preload เทียบกับ Joins และการหลีกเลี่ยงปัญหา N+1 Query
- Transaction สำหรับงานที่ต้องสำเร็จพร้อมกันหลายตาราง
- เมื่อไรควรเขียน Raw SQL อย่างปลอดภัยแทน ORM
- Lab: ระบบคำสั่งซื้อที่ตัดสต็อกสินค้าภายใน Transaction
Section 10: Lab: โครงสร้างโปรเจกต์ที่ทดสอบได้
- แยก Handler, Service และ Repository ตามหน้าที่
- กำหนด Repository เป็น Interface เพื่อสลับและทดสอบได้
- ประกอบ Dependency ใน main ด้วย Constructor Injection
- จัดการ Configuration และ Secret ผ่าน Environment Variable
- Lab: Refactor API สินค้าและคำสั่งซื้อเข้าโครงสร้างใหม่