Job Grade API - Validation Rules Documentation
Overview
Dokumentasi aturan validasi untuk Job Grade API.
Validation Rules
CREATE Job Grade
Required Fields
name(string) – Nama job grade (contoh: 1, 2A, Senior)level_id(UUID) – Job Level UUID (harus ada di DB)
Optional Fields
description(string)
Business Rules
1. Key Auto-Generation
Rule: Field key di-generate otomatis dari name dengan aturan:
- Lowercase, trim
- Karakter selain alphanumeric diganti
- - Jika key sudah dipakai, tambah suffix
-1,-2, … sampai unik - Menggunakan
JobGradeValidation.checkSlugUnique()
2. level_id Validation
Rule: level_id harus mereferensi JobLevel yang ada. Menggunakan JobLevelValidation.validateNotFound(client, { id: dto.level_id }).
Error Response:
{
"statusCode": 404,
"message": "Job level is not found",
"reason": "job-level.is_not_found"
}
3. Default Values
is_active= true pada create
UPDATE Job Grade
Required Fields (di DTO saat ini)
name(string)level_id(string/UUID)
Optional Fields
description(string | null)is_active(boolean)
Business Rules
1. Existence Check
Rule: Job grade harus ada. JobGradeValidation.validateNotFound(client, { id }).
Error Response:
{
"statusCode": 404,
"message": "Job grade is not found",
"reason": "job-grade.is_not_found"
}
2. level_id Validation
Rule: level_id harus mereferensi JobLevel yang ada.
3. Key Regeneration
Rule: Key di-regenerate dari dto.name via checkSlugUnique.
GET Job Grade by ID
Rule: Jika tidak ditemukan → NotFoundException, reason job-grade.is_not_found atau serupa.
SOFT DELETE Job Grade
1. Existence Check
Rule: Job grade harus ada sebelum soft delete.
Error Response:
{
"statusCode": 404,
"message": "Job grade is not found",
"reason": "job-grade.is_not_found"
}
2. Soft Delete Behavior
- Set
deleted_at,deleted_by,deleted_by_name.
Validation Module Reference
| Method | Keterangan |
|---|---|
| validateExistence(client, where) | Throw 400 job-grade.is_exist jika record ada |
| validateNotFound(client, where) | Throw 404 job-grade.is_not_found jika record tidak ada |
| checkSlugUnique(client, slug, attempt) | Return slug unik dengan suffix jika bentrok |
Error Code Reference
| HTTP | Reason Code | Trigger |
|---|---|---|
| 404 | job-grade.is_not_found | Record tidak ada |
| 404 | job-level.is_not_found | level_id tidak ada |
| 400 | job-grade.is_exist | validateExistence |