CentralBackend/controller/pool/PoolController.js

58 lines
2.6 KiB
JavaScript

const { createPool, listPools, updatePoolState } = require('../../services/pool/PoolService');
module.exports = {
async create(req, res) {
try {
const { pool_name, description, price, pool_type, is_active } = req.body || {};
const actorUserId = req.user && req.user.userId;
if (!pool_name) return res.status(400).json({ success: false, message: 'Pool name is required' });
if (!price || price < 0) return res.status(400).json({ success: false, message: 'Valid price is required' });
if (pool_type && !['coffee', 'other'].includes(pool_type)) {
return res.status(400).json({ success: false, message: 'Invalid pool_type. Allowed: coffee, other' });
}
const pool = await createPool({ pool_name, description, price, pool_type, is_active, created_by: actorUserId });
return res.status(201).json({ success: true, data: pool });
} catch (e) {
if (e && (e.code === 'ER_DUP_ENTRY' || e.errno === 1062)) {
return res.status(409).json({ success: false, message: 'Pool name already exists' });
}
if (e && e.status === 400) {
return res.status(400).json({ success: false, message: e.message });
}
console.error('[PoolController.create]', e);
return res.status(500).json({ success: false, message: 'Internal server error' });
}
},
async list(req, res) {
try {
console.debug('[PoolController.list] GET /api/admin/pools');
const pools = await listPools();
return res.status(200).json({ success: true, data: pools });
} catch (e) {
console.error('[PoolController.list] error', e);
return res.status(500).json({ success: false, message: 'Internal server error' });
}
},
// Update pool active status
async updateActive(req, res) {
try {
const { id } = req.params || {};
const { is_active } = req.body || {};
const actorUserId = req.user && req.user.userId;
if (!id) return res.status(400).json({ success: false, message: 'id is required' });
if (typeof is_active !== 'boolean') {
return res.status(400).json({ success: false, message: 'is_active must be a boolean' });
}
const updated = await updatePoolState(id, is_active, actorUserId);
return res.status(200).json({ success: true, data: updated });
} catch (e) {
if (e && e.status === 400) {
return res.status(400).json({ success: false, message: e.message });
}
console.error('[PoolController.updateActive]', e);
return res.status(500).json({ success: false, message: 'Internal server error' });
}
}
};