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