// ── Admin · Rust · Zone presets — the handlers ──────────────────────────── const core = require('../../core') const zones = require('../../model/zones/zones.model') const log = core.logger('zones') const by = (req) => (req.user ? req.user.id : null) /** A model refusal answers with its own status; anything else is ours to log. */ function fail(res, err, what) { if (err instanceof zones.ZonePresetError) return res.status(err.status).json({ message: err.message }) log.error(`failed to ${what}`, { error: err.message }) return res.status(500).json({ message: `Failed to ${what}` }) } async function describe(req, res) { try { res.json(await zones.describe()) } catch (err) { fail(res, err, 'read the zone presets') } } async function create(req, res) { try { const preset = await zones.create(req.body || {}, by(req)) await core.activity.log({ req, action: 'rust.zones.preset.create', detail: { id: preset.id, name: preset.name } }) res.status(201).json(preset) } catch (err) { fail(res, err, 'save the zone preset') } } async function update(req, res) { try { const preset = await zones.update(Number(req.params.id), req.body || {}) await core.activity.log({ req, action: 'rust.zones.preset.update', detail: { id: preset.id, name: preset.name } }) res.json(preset) } catch (err) { fail(res, err, 'save the zone preset') } } async function remove(req, res) { try { await zones.remove(Number(req.params.id)) await core.activity.log({ req, action: 'rust.zones.preset.delete', detail: { id: Number(req.params.id) } }) res.json({ ok: true }) } catch (err) { fail(res, err, 'delete the zone preset') } } module.exports = { describe, create, update, remove }