|
|
||
|---|---|---|
| .forgejo/workflows | ||
| .vs | ||
| docker | ||
| docs | ||
| scripts | ||
| src | ||
| static | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| .onedev-buildspec.yml | ||
| .prettierignore | ||
| .prettierrc | ||
| CHANGELOG.md | ||
| cliff.toml | ||
| jest.config.js | ||
| nodemon.json | ||
| package-lock.json | ||
| package.json | ||
| pnpm-lock.yaml | ||
| README.md | ||
| tsconfig.json | ||
| tsoa.json | ||
hrms-api-org
ระบบ API สำหรับจัดการข้อมูลบุคลากรและโครงสร้างองค์กร (HRMS)
✨ Features
- RESTful API (Express)
- ฐานข้อมูล MySQL (TypeORM)
- Cronjob อัตโนมัติ (node-cron)
- WebSocket สำหรับ real-time
- RabbitMQ integration
- Swagger UI สำหรับ API docs
- รองรับการ import/export ข้อมูล
🗂️ โครงสร้างโปรเจกต์หลัก
| Path | รายละเอียด |
|---|---|
src/controllers/ |
API Controllers |
src/entities/ |
Entity สำหรับ TypeORM |
src/services/ |
Service logic (RabbitMQ, WebSocket) |
src/database/data-source.ts |
ตั้งค่าเชื่อมต่อฐานข้อมูล |
src/migration/ |
ไฟล์ migration ของฐานข้อมูล |
static/ |
ไฟล์ static และ config |
scripts/clean-migration-fk-idx.js |
สคริปต์ลบบรรทัด FK*/idx* ใน migration |
🚀 การใช้งานเบื้องต้น
-
ติดตั้ง dependencies
npm install -
สร้างไฟล์
.env- กำหนดค่าฐานข้อมูลและ API_KEY ตามต้องการ
-
Build และ Start
npm run build npm start -
ดู API docs
- เปิดที่
http://localhost:3000/api-docs
- เปิดที่
🛠️ คำสั่งที่สำคัญ (npm scripts)
-
npm run dev: รันแบบ development (hot reload) -
npm run build: สร้างไฟล์สำหรับ production -
npm run migration:generate: สร้าง migration ใหม่ เช่นnpm run migration:generate src/migration/update_table_0811202s -
npm run migration:run: รัน migration -
node scripts/clean-migration-fk-idx.js: ลบบรรทัดที่มีFK_หรือidx_ใน migration อัตโนมัติ (ควรรันหลัง gen migration ทุกครั้ง)
🐳 การ Build/Deploy ด้วย act (local GitHub Actions)
หากต้องการ build และ deploy ด้วย workflow release (เช่น ทดสอบ pipeline บนเครื่อง) ให้ใช้คำสั่งนี้:
act workflow_dispatch -W .github/workflows/release.yaml --input IMAGE_VER=latest -s DOCKER_USER=admin -s DOCKER_PASS=FPTadmin2357 -s SSH_PASSWORD=FPTadmin2357
อธิบาย option ที่ใช้:
-W .github/workflows/release.yaml: ระบุ workflow ที่จะรัน--input IMAGE_VER=latest: กำหนด tag ของ docker image (เช่น latest)-s DOCKER_USER=...: กำหนด secret สำหรับ docker registry-s DOCKER_PASS=...: กำหนด secret สำหรับ docker registry-s SSH_PASSWORD=...: กำหนด secret สำหรับ ssh deploy
⚠️ หมายเหตุ: สำหรับ production ห้ามใช้รหัสผ่านจริงใน public repo หรือแชร์ credentials
⚠️ หมายเหตุเกี่ยวกับ Migration
-
หลังจากใช้
npm run migration:generateแล้ว ต้องลบบรรทัดที่มีFK_หรือidx_ออกจากไฟล์ migration ทุกครั้ง (ทั้งในฟังก์ชัน up/down) -
สามารถใช้สคริปต์นี้ช่วยลบอัตโนมัติ:
node scripts/clean-migration-fk-idx.js -
สคริปต์นี้จะค้นหาและแทนที่บรรทัดที่มี
FK_หรือidx_ด้วย comment// removed FK_/idx_ auto-cleanupในทุกไฟล์ migration
📄 License
Distributed under the ISC License.