refactor: rewrite ke codebase lama
This commit is contained in:
+173
@@ -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();
|
||||
Executable
+5
@@ -0,0 +1,5 @@
|
||||
const faqController = require('./controllers/faq.controllers');
|
||||
|
||||
module.exports = {
|
||||
faqController,
|
||||
};
|
||||
Executable
+26
@@ -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
@@ -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();
|
||||
Executable
+67
@@ -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();
|
||||
Reference in New Issue
Block a user