37 lines
926 B
JavaScript
37 lines
926 B
JavaScript
const express = require('express');
|
|
const { z } = require('zod');
|
|
const service = require('../instrumentConfig/service');
|
|
|
|
const router = express.Router();
|
|
|
|
const schema = z.object({
|
|
instrument_id: z.string().min(1),
|
|
connector: z.enum(['http-json', 'hl7-tcp', 'astm-serial']),
|
|
enabled: z.boolean().optional().default(true),
|
|
config: z.record(z.any()).optional()
|
|
});
|
|
|
|
router.get('/', async (req, res) => {
|
|
res.json(service.list());
|
|
});
|
|
|
|
router.get('/:id', async (req, res) => {
|
|
const entry = service.get(req.params.id);
|
|
if (!entry) {
|
|
return res.status(404).json({ error: 'not found' });
|
|
}
|
|
res.json(entry);
|
|
});
|
|
|
|
router.post('/', express.json(), async (req, res) => {
|
|
try {
|
|
const payload = schema.parse(req.body);
|
|
const saved = await service.upsert(payload);
|
|
res.status(201).json(saved);
|
|
} catch (err) {
|
|
res.status(400).json({ error: err.message });
|
|
}
|
|
});
|
|
|
|
module.exports = { router };
|