refactor: rewrite ke codebase lama

This commit is contained in:
Muhammad Zhafran Ilham
2026-06-07 20:17:49 +07:00
parent ce5487dcbf
commit fe74b2213d
146 changed files with 14608 additions and 6686 deletions
+173
View File
@@ -0,0 +1,173 @@
const faqService = require('../services/faq.services');
const { createFaqModel, updateFaqModel } = require('../models/faq.models');
const { response } = require('../../../helpers/utils/wrapper');
const { isValidPayload } = require('../../../helpers/utils/validator');
const { InternalServerError } = require('../../../helpers/error');
const { SUCCESS, ERROR } = require('../../../helpers/http-status/status_code');
class FaqController {
async addFaq(req, res) {
try {
const payload = req.body;
const validatePayload = isValidPayload(payload, createFaqModel);
if (validatePayload.err) {
return response(
res,
'fail',
validatePayload,
'Validasi gagal',
ERROR.EXPECTATION_FAILED
);
}
const result = await faqService.createFaq(validatePayload.data);
if (result.err) {
return response(res, 'fail', result);
}
return response(
res,
'success',
result,
'FAQ berhasil ditambahkan',
SUCCESS.CREATED
);
} catch (err) {
return response(
res,
'fail',
{ err: new InternalServerError(err.message) },
'Terjadi kesalahan yang tidak terduga',
ERROR.INTERNAL_ERROR
);
}
}
async getAllFaq(req, res) {
try {
const result = await faqService.getAllFaq();
if (result.err) {
return response(res, 'fail', result);
}
return response(
res,
'success',
result,
'Data FAQ berhasil diambil',
SUCCESS.OK
);
} catch (err) {
return response(
res,
'fail',
{ err: new InternalServerError(err.message) },
'Terjadi kesalahan yang tidak terduga',
ERROR.INTERNAL_ERROR
);
}
}
async getFaqById(req, res) {
try {
const { id } = req.params;
const result = await faqService.getFaqById(id);
if (result.err) {
return response(res, 'fail', result);
}
return response(
res,
'success',
result,
'Data FAQ berhasil diambil',
SUCCESS.OK
);
} catch (err) {
return response(
res,
'fail',
{ err: new InternalServerError(err.message) },
'Terjadi kesalahan yang tidak terduga',
ERROR.INTERNAL_ERROR
);
}
}
async updateFaq(req, res) {
try {
const { id } = req.params;
const payload = req.body;
const validatePayload = isValidPayload(payload, updateFaqModel);
if (validatePayload.err) {
return response(
res,
'fail',
validatePayload,
'Validasi gagal',
ERROR.EXPECTATION_FAILED
);
}
const result = await faqService.updateFaq(id, validatePayload.data);
if (result.err) {
return response(res, 'fail', result);
}
return response(
res,
'success',
result,
'FAQ berhasil diperbarui',
SUCCESS.OK
);
} catch (err) {
return response(
res,
'fail',
{ err: new InternalServerError(err.message) },
'Terjadi kesalahan yang tidak terduga',
ERROR.INTERNAL_ERROR
);
}
}
async deleteFaq(req, res) {
try {
const { id } = req.params;
const result = await faqService.deleteFaq(id);
if (result.err) {
return response(res, 'fail', result);
}
return response(
res,
'success',
result,
'FAQ berhasil dihapus',
SUCCESS.OK
);
} catch (err) {
return response(
res,
'fail',
{ err: new InternalServerError(err.message) },
'Terjadi kesalahan yang tidak terduga',
ERROR.INTERNAL_ERROR
);
}
}
}
module.exports = new FaqController();
+5
View File
@@ -0,0 +1,5 @@
const faqController = require('./controllers/faq.controllers');
module.exports = {
faqController,
};
+26
View File
@@ -0,0 +1,26 @@
const joi = require('joi');
const createFaqModel = joi.object({
pertanyaan: joi.string().required().messages({
'string.base': 'Pertanyaan harus berupa teks.',
'any.required': 'Pertanyaan wajib diisi.',
}),
jawaban: joi.string().required().messages({
'string.base': 'Jawaban harus berupa teks.',
'any.required': 'Jawaban wajib diisi.',
}),
});
const updateFaqModel = joi.object({
pertanyaan: joi.string().messages({
'string.base': 'Pertanyaan harus berupa teks.',
}),
jawaban: joi.string().messages({
'string.base': 'Jawaban harus berupa teks.',
}),
});
module.exports = {
createFaqModel,
updateFaqModel,
};
+38
View File
@@ -0,0 +1,38 @@
const prisma = require('../../../helpers/db/db_connection');
class FaqRepository {
async create(data) {
return prisma.faq.create({
data: data,
});
}
async findAll() {
return prisma.faq.findMany({
orderBy: {
created_at: 'desc',
},
});
}
async findById(id) {
return prisma.faq.findUnique({
where: { id: parseInt(id) },
});
}
async updateById(id, data) {
return prisma.faq.update({
where: { id: parseInt(id) },
data: data,
});
}
async deleteById(id) {
return prisma.faq.delete({
where: { id: parseInt(id) },
});
}
}
module.exports = new FaqRepository();
+67
View File
@@ -0,0 +1,67 @@
const faqRepository = require('../repositories/faq.repositories');
const { data, error } = require('../../../helpers/utils/wrapper');
const { NotFoundError, BadRequestError } = require('../../../helpers/error');
class FaqService {
async createFaq(faqData) {
try {
const result = await faqRepository.create(faqData);
return data(result);
} catch (err) {
return error(err);
}
}
async getAllFaq() {
try {
const results = await faqRepository.findAll();
return data(results);
} catch (err) {
return error(err);
}
}
async getFaqById(id) {
try {
const result = await faqRepository.findById(id);
if (!result) {
return error(new NotFoundError('FAQ Tidak Ditemukan'));
}
return data(result);
} catch (err) {
return error(err);
}
}
async updateFaq(id, faqData) {
try {
const checkResult = await this.getFaqById(id);
if (checkResult.err) {
return checkResult;
}
const result = await faqRepository.updateById(id, faqData);
return data(result);
} catch (err) {
return error(err);
}
}
async deleteFaq(id) {
try {
const checkResult = await this.getFaqById(id);
if (checkResult.err) {
return checkResult;
}
const result = await faqRepository.deleteById(id);
return data(result);
} catch (err) {
return error(err);
}
}
}
module.exports = new FaqService();