Files
web-antrean/server/api/patient-subspesialis.ts
T
2026-06-05 08:21:56 +07:00

55 lines
1.5 KiB
TypeScript

import { defineEventHandler, readBody } from 'h3';
import fs from 'fs';
import path from 'path';
// Path to the mock JSON file
const filePath = path.resolve(process.cwd(), 'public/data/patient_subspesialis.json');
// Ensure directory and file exist
const ensureFileExists = () => {
const dirPath = path.dirname(filePath);
if (!fs.existsSync(dirPath)) {
fs.mkdirSync(dirPath, { recursive: true });
}
if (!fs.existsSync(filePath)) {
fs.writeFileSync(filePath, JSON.stringify({}, null, 2), 'utf-8');
}
};
export default defineEventHandler(async (event) => {
ensureFileExists();
if (event.node.req.method === 'GET') {
// Return all mappings
try {
const data = fs.readFileSync(filePath, 'utf-8');
return JSON.parse(data);
} catch (e) {
return {};
}
}
if (event.node.req.method === 'POST') {
// Save a new mapping
try {
const body = await readBody(event);
const { barcode, subspesialis } = body;
if (!barcode || !subspesialis) {
return { success: false, message: 'Barcode and subspesialis are required' };
}
const fileData = fs.readFileSync(filePath, 'utf-8');
const data = JSON.parse(fileData);
// Save mapping: barcode -> subspesialis object
data[barcode] = subspesialis;
fs.writeFileSync(filePath, JSON.stringify(data, null, 2), 'utf-8');
return { success: true, message: 'Saved successfully' };
} catch (e) {
return { success: false, message: e.message };
}
}
});