Source: validation/admin-validation.js

  1. import Joi from "joi";
  2. /**
  3. * Validasi untuk menambahkan buku baru.
  4. *
  5. * Validasi ini memastikan bahwa data yang diterima untuk buku baru memenuhi semua persyaratan,
  6. * termasuk validasi untuk id, judul, deskripsi, penulis, ISBN, ID penerbit, genre, dan stok.
  7. *
  8. * @constant {Object} newBookValidation
  9. * @property {Object} id - ID buku yang harus berupa angka dan wajib ada
  10. * @property {string} title - Judul buku yang harus berupa string dengan panjang maksimal 255 karakter dan wajib ada
  11. * @property {string} description - Deskripsi buku yang bersifat opsional dan maksimal 255 karakter
  12. * @property {string} author - Penulis buku yang harus berupa string dengan panjang maksimal 255 karakter dan wajib ada
  13. * @property {string} isbn - ISBN buku yang harus berupa string dengan panjang maksimal 255 karakter dan wajib ada
  14. * @property {number} publisherBookId - ID penerbit yang harus berupa angka dan wajib ada
  15. * @property {Array<number>} genres - Daftar ID genre yang harus berupa array angka dan wajib ada
  16. * @property {number} stok - Jumlah stok buku yang harus berupa angka dan minimal 0
  17. */
  18. const newBookValidation = Joi.object({
  19. id: Joi.number().required(),
  20. title: Joi.string().max(255).required(),
  21. description: Joi.string().max(255).optional(),
  22. author: Joi.string().max(255).required(),
  23. isbn: Joi.string().max(255).required(),
  24. publisherBookId: Joi.number().required(),
  25. genres: Joi.array().items(Joi.number()).required(),
  26. stok: Joi.number().min(0).required(),
  27. });
  28. /**
  29. * Validasi untuk memperbarui buku.
  30. *
  31. * Validasi ini memastikan bahwa data yang diterima untuk memperbarui buku memenuhi semua persyaratan yang sama
  32. * dengan validasi untuk buku baru, termasuk validasi untuk id, judul, deskripsi, penulis, ISBN, ID penerbit, genre, dan stok.
  33. *
  34. * @constant {Object} updateBookValidation
  35. * @property {Object} id - ID buku yang harus berupa angka dan wajib ada
  36. * @property {string} title - Judul buku yang harus berupa string dengan panjang maksimal 255 karakter dan wajib ada
  37. * @property {string} description - Deskripsi buku yang bersifat opsional dan maksimal 255 karakter
  38. * @property {string} author - Penulis buku yang harus berupa string dengan panjang maksimal 255 karakter dan wajib ada
  39. * @property {string} isbn - ISBN buku yang harus berupa string dengan panjang maksimal 255 karakter dan wajib ada
  40. * @property {number} publisherBookId - ID penerbit yang harus berupa angka dan wajib ada
  41. * @property {Array<number>} genres - Daftar ID genre yang harus berupa array angka dan wajib ada
  42. * @property {number} stok - Jumlah stok buku yang harus berupa angka dan minimal 0
  43. */
  44. const updateBookValidation = Joi.object({
  45. id: Joi.number().required(),
  46. title: Joi.string().max(255).required(),
  47. description: Joi.string().max(255).optional(),
  48. author: Joi.string().max(255).required(),
  49. isbn: Joi.string().max(255).required(),
  50. publisherBookId: Joi.number().required(),
  51. genres: Joi.array().items(Joi.number()).required(),
  52. stok: Joi.number().min(0).required(),
  53. });
  54. /**
  55. * Validasi untuk menghapus buku berdasarkan ID.
  56. *
  57. * Validasi ini memastikan bahwa ID buku yang akan dihapus adalah berupa angka dan wajib ada.
  58. *
  59. * @constant {Object} removeBookValidationById
  60. * @property {Object} id - ID buku yang akan dihapus, yang harus berupa angka dan wajib ada
  61. */
  62. const removeBookValidationById = Joi.object({
  63. id: Joi.number().required(),
  64. });
  65. export { newBookValidation, removeBookValidationById, updateBookValidation };