tinylink/middleware/src/routes/instrumentConfig.js

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 };