Skip to main content

Job Level API - Validation Rules Documentation

Overview

Dokumentasi aturan validasi untuk Job Level API.


Validation Rules

CREATE Job Level

Required Fields

  • name (string) – Nama job level (contoh: Junior, Senior, Manager)

Optional Fields

  • description (string)

Business Rules

1. Key Auto-Generation

Rule: Field key di-generate dari name dengan JobLevelHelper.generateSlug(name).
Tidak ada suffix otomatis jika bentrok — key harus unik. Jika key sudah dipakai, create gagal.

2. Key Uniqueness

Rule: Key harus unik. Menggunakan JobLevelValidation.validateExistence(client, { key }) — jika record dengan key tersebut ada, throw.

Error Response:

{
"statusCode": 400,
"message": "Job level is exist",
"reason": "job-level.is_exist"
}
3. order_index

Rule: order_index di-set otomatis = max(order_index) + 1 dari record yang tidak soft-deleted. Client tidak mengirim order_index pada create.

4. Default Values
  • is_active = true pada create

UPDATE Job Level

All Fields Optional

  • key, name, description, order_index, is_active

Business Rules

1. Existence Check

Rule: Job level harus ada sebelum update. Idealnya menggunakan validateNotFound(client, { id }).

Catatan implementasi: Saat ini update memanggil validateExistence(client, { id }) — yang melempar jika record ada. Ini kemungkinan bug; untuk update seharusnya memvalidasi record ada (validateNotFound), bukan tidak ada.

Error Response (jika tidak ada):

{
"statusCode": 404,
"message": "Job level is not found",
"reason": "job-level.is_not_found"
}
2. Key Regeneration

Rule: Key di-regenerate dari dto.name di update. Jika name diubah, key ikut berubah.


GET Job Level by ID

Rule: Jika tidak ditemukan → NotFoundException, reason job-level.is_not_found.


SOFT DELETE Job Level

1. Existence Check

Rule: Job level harus ada sebelum soft delete. Menggunakan validateNotFound.

Error Response:

{
"statusCode": 404,
"message": "Job level is not found",
"reason": "job-level.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-level.is_exist jika record ada (untuk validasi key unik)
validateNotFound(client, where)Throw 404 job-level.is_not_found jika record tidak ada

Error Code Reference

HTTPReason CodeTrigger
404job-level.is_not_foundRecord tidak ada
400job-level.is_existKey sudah dipakai (create)