Job Title API - Validation Rules Documentation
Overview
Dokumentasi aturan validasi untuk Job Title API. Sumber implementasi: validation/index.ts, commands.
Validation Rules
CREATE Job Title
Required Fields
name(string) – Nama job titlefamily_id(UUID) – Job Family UUID (harus ada di DB)level_id(UUID) – Job Level UUID (harus ada di DB)grade_id(UUID) – Job Grade UUID (harus ada di DB)
Optional Fields
description(string) – Deskripsi opsional
Business Rules
1. FK Validation
Rule: Semua FK (family_id, level_id, grade_id) harus mereferensi record yang ada. Menggunakan:
JobLevelValidation.validateNotFound(client, { id: dto.level_id })JobGradeValidation.validateNotFound(client, { id: dto.grade_id })JobFamilyValidation.validateNotFound(client, { id: dto.family_id })
Error Response (404):
{
"statusCode": 404,
"message": "Job level is not found",
"reason": "job-level.is_not_found"
}
(atau job-grade.is_not_found, job-family.is_not_found)
2. Default Values
is_activedi-set true pada create.
Error Responses:
- 400 Bad Request — Validasi DTO gagal (name kosong, UUID invalid)
- 404 — FK tidak ditemukan
UPDATE Job Title
Required Fields
name(string) – Wajib dikirim di DTO saat ini
Optional Fields
level_id,family_id,grade_id(UUID)description(string | null)is_active(boolean)
Business Rules
1. Existence Check
Rule: Job title harus ada sebelum update. Menggunakan JobTitleValidation.validateNotFound(client, { id }).
Error Response:
{
"statusCode": 404,
"message": "Job title is not found",
"reason": "job-title.is_not_found"
}
2. FK Validation
Jika level_id, grade_id, atau family_id dikirim, masing-masing harus mereferensi record yang ada.
GET Job Title by ID
Rule: Jika record tidak ditemukan, query melempar NotFoundException.
Error Response:
{
"statusCode": 404,
"message": "Job title is not found",
"reason": "job-title.is_not_found"
}
SOFT DELETE Job Title
Business Rules
1. Existence Check
Rule: Job title harus ada sebelum soft delete.
Error Response:
{
"statusCode": 404,
"message": "Job title is not found",
"reason": "job-title.is_not_found"
}
2. Soft Delete Behavior
- Set
deleted_at,deleted_by,deleted_by_name; record tidak dihapus dari database.
Validation Module Reference
| Method | Keterangan | Dipakai di |
|---|---|---|
| validateExistence(client, where) | Throw 400 job-title.is_exist jika record ada | Saat ini tidak dipakai di flow create |
| validateNotFound(client, where) | Throw 404 job-title.is_not_found jika record tidak ada | Update, Soft Delete, Get by ID |
Error Code Reference
| HTTP | Reason Code | Trigger |
|---|---|---|
| 404 | job-title.is_not_found | Record tidak ada |
| 404 | job-level.is_not_found | level_id tidak ada |
| 404 | job-grade.is_not_found | grade_id tidak ada |
| 404 | job-family.is_not_found | family_id tidak ada |
| 400 | job-title.is_exist | validateExistence (tidak dipakai di create) |