Skip to main content

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

MethodKeterangan
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

HTTPReason CodeTrigger
404job-grade.is_not_foundRecord tidak ada
404job-level.is_not_foundlevel_id tidak ada
400job-grade.is_existvalidateExistence