Job Position API - Validation Rules Documentation
Overview
Dokumentasi aturan validasi untuk Job Position API.
Validation Rules
CREATE Job Position
Required Fields
title_id(UUID) – Job Title UUID (harus ada di DB)code(string) – Kode posisi (harus unik per tenant)
Business Rules
1. Code Uniqueness
Rule: code harus unik di dalam tenant. Menggunakan JobPositionValidation.validateExistence(client, { code: dto.code }) — jika record dengan code tersebut ada, throw error.
Error Response:
{
"statusCode": 400,
"message": "Job position is exist",
"reason": "job-position.is_exist"
}
2. title_id Validation
Rule: title_id harus mereferensi JobTitle yang ada. JobTitleValidation.validateNotFound(client, { id: dto.title_id }).
Error Response:
{
"statusCode": 404,
"message": "Job title is not found",
"reason": "job-title.is_not_found"
}
3. Default Values
is_active= true pada create
UPDATE Job Position
Required Fields (di DTO)
title_id(UUID)
Optional Fields
code(string)is_active(boolean)
Business Rules
1. Existence Check
Rule: Job position harus ada. JobPositionValidation.validateNotFound(client, { id }).
Error Response:
{
"statusCode": 404,
"message": "Job position is not found",
"reason": "job-position.is_not_found"
}
2. Code Uniqueness (bila code dikirim)
Rule: Bila code dikirim, harus unik. validateExistence(client, { code: dto.code }).
Catatan: Implementasi saat ini memanggil validateExistence dengan dto.code selalu. Bila code tidak dikirim (undefined), perlu dipastikan validasi tidak salah trigger — idealnya hanya validasi bila code diubah, dan exclude current record dari pengecekan.
Error Response (bila code bentrok):
{
"statusCode": 400,
"message": "Job position is exist",
"reason": "job-position.is_exist"
}
3. title_id Validation
Rule: title_id harus mereferensi JobTitle yang ada.
GET Job Position by ID
Rule: Jika tidak ditemukan → NotFoundException.
SOFT DELETE Job Position
1. Existence Check
Rule: Job position harus ada sebelum soft delete.
Error Response:
{
"statusCode": 404,
"message": "Job position is not found",
"reason": "job-position.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-position.is_exist jika record ada (dipakai untuk cek code unik) |
| validateNotFound(client, where) | Throw 404 job-position.is_not_found jika record tidak ada |
Error Code Reference
| HTTP | Reason Code | Trigger |
|---|---|---|
| 404 | job-position.is_not_found | Record tidak ada |
| 404 | job-title.is_not_found | title_id tidak ada |
| 400 | job-position.is_exist | Code sudah dipakai |