Skip to main content

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​

MethodKeterangan
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​

HTTPReason CodeTrigger
404job-position.is_not_foundRecord tidak ada
404job-title.is_not_foundtitle_id tidak ada
400job-position.is_existCode sudah dipakai