Skip to main content

Job Title API - Validation Rules Documentation

Overview

Dokumentasi aturan validasi untuk Job Title API. Sumber implementasi: validation/index.ts, commands.


Validation Rules

CREATE Job Title

Required Fields

  • name (string) – Nama job title
  • family_id (UUID) – Job Family UUID (harus ada di DB)
  • level_id (UUID) – Job Level UUID (harus ada di DB)
  • grade_id (UUID) – Job Grade UUID (harus ada di DB)

Optional Fields

  • description (string) – Deskripsi opsional

Business Rules

1. FK Validation

Rule: Semua FK (family_id, level_id, grade_id) harus mereferensi record yang ada. Menggunakan:

  • JobLevelValidation.validateNotFound(client, { id: dto.level_id })
  • JobGradeValidation.validateNotFound(client, { id: dto.grade_id })
  • JobFamilyValidation.validateNotFound(client, { id: dto.family_id })

Error Response (404):

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

(atau job-grade.is_not_found, job-family.is_not_found)

2. Default Values
  • is_active di-set true pada create.

Error Responses:

  • 400 Bad Request — Validasi DTO gagal (name kosong, UUID invalid)
  • 404 — FK tidak ditemukan

UPDATE Job Title

Required Fields

  • name (string) – Wajib dikirim di DTO saat ini

Optional Fields

  • level_id, family_id, grade_id (UUID)
  • description (string | null)
  • is_active (boolean)

Business Rules

1. Existence Check

Rule: Job title harus ada sebelum update. Menggunakan JobTitleValidation.validateNotFound(client, { id }).

Error Response:

{
"statusCode": 404,
"message": "Job title is not found",
"reason": "job-title.is_not_found"
}
2. FK Validation

Jika level_id, grade_id, atau family_id dikirim, masing-masing harus mereferensi record yang ada.


GET Job Title by ID

Rule: Jika record tidak ditemukan, query melempar NotFoundException.

Error Response:

{
"statusCode": 404,
"message": "Job title is not found",
"reason": "job-title.is_not_found"
}

SOFT DELETE Job Title

Business Rules

1. Existence Check

Rule: Job title harus ada sebelum soft delete.

Error Response:

{
"statusCode": 404,
"message": "Job title is not found",
"reason": "job-title.is_not_found"
}
2. Soft Delete Behavior
  • Set deleted_at, deleted_by, deleted_by_name; record tidak dihapus dari database.

Validation Module Reference

MethodKeteranganDipakai di
validateExistence(client, where)Throw 400 job-title.is_exist jika record adaSaat ini tidak dipakai di flow create
validateNotFound(client, where)Throw 404 job-title.is_not_found jika record tidak adaUpdate, Soft Delete, Get by ID

Error Code Reference

HTTPReason CodeTrigger
404job-title.is_not_foundRecord tidak ada
404job-level.is_not_foundlevel_id tidak ada
404job-grade.is_not_foundgrade_id tidak ada
404job-family.is_not_foundfamily_id tidak ada
400job-title.is_existvalidateExistence (tidak dipakai di create)