refactor: rewrite ke codebase lama
This commit is contained in:
+159
@@ -0,0 +1,159 @@
|
||||
const joi = require('joi');
|
||||
|
||||
const phoneRegex = /^(\+62|62|0)8[1-9][0-9]{6,11}$/;
|
||||
|
||||
const createMahasiswaModel = joi.object().keys({
|
||||
nama_depan: joi.string().max(255).required().messages({
|
||||
'string.base': 'Nama depan harus berupa teks.',
|
||||
'string.empty': 'Nama depan tidak boleh kosong.',
|
||||
'string.max': 'Nama depan maksimal {#limit} karakter.',
|
||||
'any.required': 'Nama depan wajib diisi.',
|
||||
}),
|
||||
|
||||
nama_belakang: joi.string().max(255).optional().allow('', null).messages({
|
||||
'string.base': 'Nama belakang harus berupa teks.',
|
||||
'string.max': 'Nama belakang maksimal {#limit} karakter.',
|
||||
}),
|
||||
|
||||
email: joi.string().email({ tlds: { allow: false } }).max(255).required().messages({
|
||||
'string.base': 'Email harus berupa teks.',
|
||||
'string.empty': 'Email tidak boleh kosong.',
|
||||
'string.email': 'Format email tidak valid.',
|
||||
'string.max': 'Email maksimal {#limit} karakter.',
|
||||
'any.required': 'Email wajib diisi.',
|
||||
}),
|
||||
|
||||
kontak: joi.string().pattern(phoneRegex).max(255).required().messages({
|
||||
'string.base': 'Kontak harus berupa teks.',
|
||||
'string.empty': 'Kontak tidak boleh kosong.',
|
||||
'string.pattern.base': 'Format nomor kontak tidak valid. Gunakan format Indonesia (08xx atau +628xx).',
|
||||
'string.max': 'Kontak maksimal {#limit} karakter.',
|
||||
'any.required': 'Kontak wajib diisi.',
|
||||
}),
|
||||
|
||||
jurusan: joi.string().max(255).required().messages({
|
||||
'string.base': 'Jurusan harus berupa teks.',
|
||||
'string.empty': 'Jurusan tidak boleh kosong.',
|
||||
'string.max': 'Jurusan maksimal {#limit} karakter.',
|
||||
'any.required': 'Jurusan wajib diisi.',
|
||||
}),
|
||||
|
||||
universitas: joi.string().max(255).required().messages({
|
||||
'string.base': 'Universitas harus berupa teks.',
|
||||
'string.empty': 'Universitas tidak boleh kosong.',
|
||||
'string.max': 'Universitas maksimal {#limit} karakter.',
|
||||
'any.required': 'Universitas wajib diisi.',
|
||||
}),
|
||||
|
||||
negara: joi.string().max(255).required().messages({
|
||||
'string.base': 'Negara harus berupa teks.',
|
||||
'string.empty': 'Negara tidak boleh kosong.',
|
||||
'string.max': 'Negara maksimal {#limit} karakter.',
|
||||
'any.required': 'Negara wajib diisi.',
|
||||
}),
|
||||
|
||||
role: joi.string().valid('student').default('student').messages({
|
||||
'string.base': 'Role harus berupa teks.',
|
||||
'any.only': 'Role hanya boleh "student".',
|
||||
}),
|
||||
|
||||
cv_path: joi.string().required().messages({
|
||||
'string.base': 'Path CV harus berupa teks.',
|
||||
'string.empty': 'Path CV tidak boleh kosong.',
|
||||
'any.required': 'CV wajib diupload.',
|
||||
}),
|
||||
|
||||
portofolio_path: joi.string().required().messages({
|
||||
'string.base': 'Path portofolio harus berupa teks.',
|
||||
'string.empty': 'Path portofolio tidak boleh kosong.',
|
||||
'any.required': 'Portofolio wajib diupload.',
|
||||
}),
|
||||
|
||||
motivasi: joi.string().required().messages({
|
||||
'string.base': 'Motivasi harus berupa teks.',
|
||||
'string.empty': 'Motivasi tidak boleh kosong.',
|
||||
'any.required': 'Motivasi wajib diisi.',
|
||||
}),
|
||||
|
||||
relevant_skills: joi.string().max(255).required().messages({
|
||||
'string.base': 'Keahlian yang relevan harus berupa teks.',
|
||||
'string.empty': 'Keahlian yang relevan tidak boleh kosong.',
|
||||
'string.max': 'Keahlian yang relevan maksimal {#limit} karakter.',
|
||||
'any.required': 'Keahlian yang relevan wajib diisi.',
|
||||
}),
|
||||
});
|
||||
|
||||
const updateMahasiswaModel = joi.object().keys({
|
||||
nama_depan: joi.string().max(255).optional().messages({
|
||||
'string.base': 'Nama depan harus berupa teks.',
|
||||
'string.max': 'Nama depan maksimal {#limit} karakter.',
|
||||
}),
|
||||
|
||||
nama_belakang: joi.string().max(255).optional().allow('', null).messages({
|
||||
'string.base': 'Nama belakang harus berupa teks.',
|
||||
'string.max': 'Nama belakang maksimal {#limit} karakter.',
|
||||
}),
|
||||
|
||||
email: joi.string().email({ tlds: { allow: false } }).max(255).optional().messages({
|
||||
'string.base': 'Email harus berupa teks.',
|
||||
'string.email': 'Format email tidak valid.',
|
||||
'string.max': 'Email maksimal {#limit} karakter.',
|
||||
}),
|
||||
|
||||
kontak: joi.string().pattern(phoneRegex).max(255).optional().messages({
|
||||
'string.base': 'Kontak harus berupa teks.',
|
||||
'string.pattern.base': 'Format nomor kontak tidak valid. Gunakan format Indonesia (08xx atau +628xx).',
|
||||
'string.max': 'Kontak maksimal {#limit} karakter.',
|
||||
}),
|
||||
|
||||
jurusan: joi.string().max(255).optional().messages({
|
||||
'string.base': 'Jurusan harus berupa teks.',
|
||||
'string.max': 'Jurusan maksimal {#limit} karakter.',
|
||||
}),
|
||||
|
||||
universitas: joi.string().max(255).optional().messages({
|
||||
'string.base': 'Universitas harus berupa teks.',
|
||||
'string.max': 'Universitas maksimal {#limit} karakter.',
|
||||
}),
|
||||
|
||||
negara: joi.string().max(255).optional().messages({
|
||||
'string.base': 'Negara harus berupa teks.',
|
||||
'string.max': 'Negara maksimal {#limit} karakter.',
|
||||
}),
|
||||
|
||||
cv_path: joi.string().optional().messages({
|
||||
'string.base': 'Path CV harus berupa teks.',
|
||||
}),
|
||||
|
||||
portofolio_path: joi.string().optional().messages({
|
||||
'string.base': 'Path portofolio harus berupa teks.',
|
||||
}),
|
||||
|
||||
motivasi: joi.string().optional().messages({
|
||||
'string.base': 'Motivasi harus berupa teks.',
|
||||
}),
|
||||
|
||||
relevant_skills: joi.string().max(255).optional().messages({
|
||||
'string.base': 'Keahlian yang relevan harus berupa teks.',
|
||||
'string.max': 'Keahlian yang relevan maksimal {#limit} karakter.',
|
||||
}),
|
||||
});
|
||||
|
||||
const getAllMahasiswaModel = joi.object().keys({
|
||||
page: joi.number().integer().min(1).default(1).messages({
|
||||
'number.base': 'Halaman harus berupa angka.',
|
||||
'number.integer': 'Halaman harus berupa angka bulat.',
|
||||
'number.min': 'Halaman minimal adalah {#limit}.',
|
||||
}),
|
||||
limit: joi.number().integer().min(1).default(10).messages({
|
||||
'number.base': 'Limit harus berupa angka.',
|
||||
'number.integer': 'Limit harus berupa angka bulat.',
|
||||
'number.min': 'Limit minimal adalah {#limit}.',
|
||||
}),
|
||||
});
|
||||
|
||||
module.exports = {
|
||||
createMahasiswaModel,
|
||||
updateMahasiswaModel,
|
||||
getAllMahasiswaModel
|
||||
};
|
||||
Reference in New Issue
Block a user