57 lines
2.4 KiB
JavaScript
57 lines
2.4 KiB
JavaScript
const { createPool, listPools, updatePoolState } = require('../../services/pool/PoolService');
|
|
|
|
module.exports = {
|
|
async create(req, res) {
|
|
try {
|
|
const { name, description, state } = req.body || {};
|
|
const actorUserId = req.user && req.user.userId;
|
|
if (!name) return res.status(400).json({ success: false, message: 'name is required' });
|
|
if (state && !['active', 'inactive'].includes(state)) {
|
|
return res.status(400).json({ success: false, message: 'Invalid state. Allowed: active, inactive' });
|
|
}
|
|
const pool = await createPool({ name, description, state, 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' });
|
|
}
|
|
},
|
|
|
|
// NEW: optional state update handler (route can be added later)
|
|
async updateState(req, res) {
|
|
try {
|
|
const { id } = req.params || {};
|
|
const { state } = req.body || {};
|
|
const actorUserId = req.user && req.user.userId;
|
|
if (!id) return res.status(400).json({ success: false, message: 'id is required' });
|
|
if (!['active', 'inactive', 'archived'].includes(state)) {
|
|
return res.status(400).json({ success: false, message: 'Invalid state. Allowed: active, inactive, archived' });
|
|
}
|
|
const updated = await updatePoolState(id, state, 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.updateState]', e);
|
|
return res.status(500).json({ success: false, message: 'Internal server error' });
|
|
}
|
|
}
|
|
}; |