Skip to content

interns_playground — Repository Map & API Surface

บทนี้ (branch: main) แผนที่โค้ดและรายการ route ที่ mount จริงใน server.ts


โครงสร้าง

interns_playground/                      (branch: main)
├── package.json                         # name: todo-list-api
├── README.md                            # มี DB credential plaintext
├── tsconfig.json
├── sql/create_table.sql                 # schema todos
├── docs/export-pdf-workflow.md          # โจทย์ PDF
└── src/
    ├── server.ts                        # entrypoint
    ├── config/
    │   ├── database.ts                  # pg Pool + default host
    │   └── swagger.ts
    ├── routes/
    │   ├── todo.routes.ts
    │   ├── task.routes.ts
    │   ├── user.routes.ts
    │   └── product.routes.ts
    ├── controllers/
    ├── models/                          # todo, task, user, product, cart
    ├── types/
    └── views/products-pdf.ejs

Boot (server.ts)

dotenv.config()
express()
  cors + json + urlencoded
  view engine ejs
  POST /upload (multer → public/)
  /api-docs (Swagger)
  GET /health
  /api/todos | /api/tasks | /api/users | /api/products
  404 + error handlers
listen(PORT)

(src/server.ts:12-79)


HTTP surface

Infra

MethodPathCitation
GET/healthserver.ts:45-51
POST/uploadserver.ts:30-36
GET/api-docsserver.ts:38-42

Todos — /api/todos

MethodPathHandlerCitation
GET/getAllTodostodo.routes.ts:34
GET/:idgetTodoByIdtodo.routes.ts:81
POST/createTodotodo.routes.ts:121
PUT/:idupdateTodotodo.routes.ts:174
DELETE/:iddeleteTodotodo.routes.ts:222
PATCH/:id/soft-deletesoftDeleteTodotodo.routes.ts:270

Tasks — /api/tasks

MethodPathHandlerCitation
GET/getAllTasktask.routes.ts:34
GET/:titlegetTaskTitletask.routes.ts:126

(route ตาม status ถูก comment — task.routes.ts:80)

Users — /api/users

MethodPathHandlerCitation
GET/getAllUseruser.routes.ts:35
GET/user/:idgetuserByIduser.routes.ts:82
POST/CreateUseruser.routes.ts:122
PATCH/:idCreateUserById (+ upload)user.routes.ts:163
GET/FileUploadgetUserFileuser.routes.ts:193

Products — /api/products

MethodPathHandlerCitation
POST/createProductsproduct.routes.ts:43
GET/getProductsproduct.routes.ts:84
GET/filterfindProductproduct.routes.ts:125
GET/:idgetProductByIdproduct.routes.ts:173
PUT/:idupdateProductproduct.routes.ts:226
PATCH/:idupdateStatusproduct.routes.ts:279
GET/export/pdfexportPDFproduct.routes.ts:302
GET/create/excelcreateExcelproduct.routes.ts:325

หมายเหตุ Express: ลำดับ route สำคัญ — /export/pdf และ /filter ต้องประกาศก่อน /:id (ในไฟล์ปัจจุบัน /export/pdf อยู่หลัง /:id ที่บรรทัด 173 vs 302) — อาจทำให้ export ถูกตีความเป็น id ได้ UNVERIFIED ที่ runtime ว่าชนหรือไม่ ควรตรวจลำดับก่อนใช้โจทย์ PDF

PDF workflow อธิบายใน docs/export-pdf-workflow.md


Database defaults

Env varFallback ในโค้ดCitation
DB_HOSThost ใน database.tsdatabase.ts:7
DB_PORT5432database.ts:8
DB_NAMEinterns_dbdatabase.ts:9
DB_USER / DB_PASSWORDค่า default ใน sourcedatabase.ts:10-11

SQL ที่ commit: sql/create_table.sql สำหรับตาราง todos


สิ่งที่ไม่มีใน repo นี้

  • การอ้างอิง service VTRC อื่น
  • Dockerfile / Bitbucket pipeline ของแพลตฟอร์ม production
  • Auth แบบ JWT ของ VTRC (มีโจทย์ login บน feature branch แยก — ไม่ยืนยันว่า merge เข้า main ครบ)

ไป 02 · Scorecard