47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
import { Elysia, t } from "elysia";
|
|
import prisma from "../lib/prisma";
|
|
|
|
export const settingsRoute = new Elysia({ prefix: "/settings" })
|
|
.get("/", async ({ set }) => {
|
|
try {
|
|
let settings = await prisma.storeSettings.findFirst();
|
|
if (!settings) {
|
|
settings = await prisma.storeSettings.create({
|
|
data: {}
|
|
});
|
|
}
|
|
return settings;
|
|
} catch (err) {
|
|
console.error("[Settings] Error:", err);
|
|
set.status = 500;
|
|
return { error: "Failed to fetch settings" };
|
|
}
|
|
})
|
|
.put("/", async ({ body, set }) => {
|
|
try {
|
|
const data = body as any;
|
|
let settings = await prisma.storeSettings.findFirst();
|
|
if (!settings) {
|
|
settings = await prisma.storeSettings.create({ data });
|
|
} else {
|
|
settings = await prisma.storeSettings.update({
|
|
where: { id: settings.id },
|
|
data
|
|
});
|
|
}
|
|
return settings;
|
|
} catch (err) {
|
|
console.error("[Settings] Error:", err);
|
|
set.status = 500;
|
|
return { error: "Failed to update settings" };
|
|
}
|
|
}, {
|
|
body: t.Object({
|
|
shippingFee: t.Number(),
|
|
bankName: t.String(),
|
|
bankAccountName: t.String(),
|
|
bankAccountNumber: t.String(),
|
|
pointsEarnRate: t.Number()
|
|
})
|
|
});
|