bug-test-api
Version:
Express.js API project: bug-test-api
149 lines (130 loc) • 3.79 kB
JavaScript
const questionOptionsService = require('../services/questionOptionsService');
const { validateQuestionOptions } = require('../validators/questionOptionsValidator');
class QuestionOptionsController {
async getAll(req, res) {
try {
const { page = 1, limit = 10, search, sort, order, ...filters } = req.query;
const result = await questionOptionsService.findAll({
page: parseInt(page),
limit: parseInt(limit),
filters: { search, sort, order, ...filters }
});
res.json({
success: true,
data: result.data,
pagination: {
page: result.page,
limit: result.limit,
total: result.total,
pages: Math.ceil(result.total / result.limit)
}
});
} catch (error) {
res.status(500).json({
success: false,
message: 'Error fetching questionoptions',
error: error.message
});
}
}
async getById(req, res) {
try {
const { id } = req.params;
const questionOptions = await questionOptionsService.findById(id);
if (!questionOptions) {
return res.status(404).json({
success: false,
message: 'QuestionOptions not found'
});
}
res.json({
success: true,
data: questionOptions
});
} catch (error) {
res.status(500).json({
success: false,
message: 'Error fetching questionoptions',
error: error.message
});
}
}
async create(req, res) {
try {
const { error, value } = validateQuestionOptions(req.body);
if (error) {
return res.status(400).json({
success: false,
message: 'Validation error',
errors: error.details.map(detail => detail.message)
});
}
const questionOptions = await questionOptionsService.create(value);
res.status(201).json({
success: true,
message: 'QuestionOptions created successfully',
data: questionOptions
});
} catch (error) {
res.status(500).json({
success: false,
message: 'Error creating questionoptions',
error: error.message
});
}
}
async update(req, res) {
try {
const { id } = req.params;
const { error, value } = validateQuestionOptions(req.body);
if (error) {
return res.status(400).json({
success: false,
message: 'Validation error',
errors: error.details.map(detail => detail.message)
});
}
const questionOptions = await questionOptionsService.update(id, value);
if (!questionOptions) {
return res.status(404).json({
success: false,
message: 'QuestionOptions not found'
});
}
res.json({
success: true,
message: 'QuestionOptions updated successfully',
data: questionOptions
});
} catch (error) {
res.status(500).json({
success: false,
message: 'Error updating questionoptions',
error: error.message
});
}
}
async delete(req, res) {
try {
const { id } = req.params;
const deleted = await questionOptionsService.delete(id);
if (!deleted) {
return res.status(404).json({
success: false,
message: 'QuestionOptions not found'
});
}
res.json({
success: true,
message: 'QuestionOptions deleted successfully'
});
} catch (error) {
res.status(500).json({
success: false,
message: 'Error deleting questionoptions',
error: error.message
});
}
}
}
module.exports = new QuestionOptionsController();