Files
antrean-operasi/server/api/hak-akses/[id].ts
2026-02-18 08:21:58 +07:00

141 lines
3.8 KiB
TypeScript

import fs from 'fs';
import path from 'path';
import type { HakAkses } from '~/types/setting';
const filePath = path.resolve('data/mock/hakAkses.json');
// Helper to read JSON file
const readData = (): HakAkses[] => {
try {
const data = fs.readFileSync(filePath, 'utf-8');
return JSON.parse(data);
} catch (error) {
console.error('Error reading hakAkses.json:', error);
return [];
}
};
// Helper to write JSON file
const writeData = (data: HakAkses[]): boolean => {
try {
fs.writeFileSync(filePath, JSON.stringify(data, null, 4), 'utf-8');
return true;
} catch (error) {
console.error('Error writing hakAkses.json:', error);
return false;
}
};
export default defineEventHandler(async (event) => {
const method = event.method;
const id = event.context.params?.id || '0';
if (!id) {
return {
success: false,
message: 'Invalid ID'
};
}
// GET - Get single hak akses by ID
if (method === 'GET') {
const data = readData();
const hakAkses = data.find(item => item.id === id);
if (hakAkses) {
return {
success: true,
data: hakAkses
};
} else {
return {
success: false,
message: 'Hak akses tidak ditemukan'
};
}
}
// PUT - Update hak akses
if (method === 'PUT') {
try {
const body = await readBody(event);
const data = readData();
const index = data.findIndex(item => item.id === id);
if (index === -1) {
return {
success: false,
message: 'Hak akses tidak ditemukan'
};
}
// Update the item
data[index] = {
id,
namaHakAkses: body.namaHakAkses,
status: body.status,
pages: body.pages || []
};
const success = writeData(data);
if (success) {
return {
success: true,
message: 'Hak akses berhasil diupdate',
data: data[index]
};
} else {
throw new Error('Failed to save data');
}
} catch (error) {
return {
success: false,
message: 'Gagal mengupdate hak akses',
error: error instanceof Error ? error.message : 'Unknown error'
};
}
}
// DELETE - Delete hak akses
if (method === 'DELETE') {
try {
const data = readData();
const index = data.findIndex(item => item.id === id);
if (index === -1) {
return {
success: false,
message: 'Hak akses tidak ditemukan'
};
}
const deletedItem = data[index];
data.splice(index, 1);
const success = writeData(data);
if (success) {
return {
success: true,
message: 'Hak akses berhasil dihapus',
data: deletedItem
};
} else {
throw new Error('Failed to save data');
}
} catch (error) {
return {
success: false,
message: 'Gagal menghapus hak akses',
error: error instanceof Error ? error.message : 'Unknown error'
};
}
}
return {
success: false,
message: 'Method not allowed'
};
});