2024-09-05 10:54:53 +08:00

58 lines
1.4 KiB
JavaScript

// path: /api/lookup?type=jenis_barang
export default defineEventHandler(async (event) => {
const { type } = getQuery(event); // Get lookup type from query params, e.g., jenis_barang, dapatan
if (!type) {
return {
statusCode: 400,
message: "Lookup type is required",
};
}
try {
const lookups = await prisma.lookup.findMany({
where: {
lookupTitle: type,
lookupStatus: "ACTIVE",
},
select: {
lookupID: true,
lookupTitle: true,
lookupValue: true,
},
});
if (!lookups) {
return {
statusCode: 404,
message: "Lookup data not found",
};
}
// Convert snake_case to Title Case: e.g., jenis_barang_siber -> Jenis Barang Siber
const defaultTitle = type
.split("_")
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
.join(" ");
// Transform the lookups data to the required format
const transformedLookups = [
{ label: `Sila Pilih ${defaultTitle}`, value: null }, // Add an empty option as the first item
...lookups.map((lookup) => ({
label: lookup.lookupValue,
value: lookup.lookupID,
})),
];
return {
statusCode: 200,
data: transformedLookups,
};
} catch (error) {
return {
statusCode: 500,
message: "Error fetching lookup data",
error: error.message,
};
}
});