This commit is contained in:
Your Name committed 2026-06-21 20:00:01 -04:00
1 parent 443bdfb6dc
commit 50b93eb629
20 files changed
+552 -435

No files matched your search

+2 -1
View File
@@ -27,6 +27,7 @@ import { lineRoutes } from "./routes/line";
import { menusRoute } from "./routes/menus";
import { newsletterRoute } from "./routes/newsletter";
import { mediaRoute } from "./routes/media";
import { contactsRoute } from "./routes/contacts";
const PORT = process.env.PORT ? parseInt(process.env.PORT) : 3051;
const CORS_ORIGIN = process.env.CORS_ORIGIN || "http://localhost:5173";
const JWT_SECRET = process.env.JWT_SECRET || "homaroma_secret_2026_scent";
@@ -125,7 +126,7 @@ const app = new Elysia()
return file;
})
.group("/api", (app) =>
app.use(authRoute).use(categoriesRoute).use(productsRoute).use(uploadRoute).use(heroRoute).use(ordersRoute).use(settingsRoute).use(articlesRoute).use(tiktokRoute).use(rawMaterialsRoute).use(shopeeRoute).use(tiktokOrderRoute).use(lazadaOrderRoute).use(customersRoute).use(couponsRoute).use(reviewsRoute).use(promotionsRoute).use(pagesRoute).use(paymentsRoute).use(profileRoute).use(lineRoutes).use(menusRoute).use(newsletterRoute).use(mediaRoute)
app.use(authRoute).use(categoriesRoute).use(productsRoute).use(uploadRoute).use(heroRoute).use(ordersRoute).use(settingsRoute).use(articlesRoute).use(tiktokRoute).use(rawMaterialsRoute).use(shopeeRoute).use(tiktokOrderRoute).use(lazadaOrderRoute).use(customersRoute).use(couponsRoute).use(reviewsRoute).use(promotionsRoute).use(pagesRoute).use(paymentsRoute).use(profileRoute).use(lineRoutes).use(menusRoute).use(newsletterRoute).use(mediaRoute).use(contactsRoute)
)
.listen({ port: PORT, hostname: "0.0.0.0" });
+58
View File
@@ -0,0 +1,58 @@
import { Elysia, t } from "elysia";
import prisma from "../lib/prisma.js";
export const contactsRoute = new Elysia({ prefix: "/contacts" })
.post("/", async ({ body, set }) => {
try {
const { name, email, message } = body;
const contactMessage = await prisma.contactMessage.create({
data: {
name,
email,
message
}
});
return { success: true, data: contactMessage };
} catch (err) {
console.error(err);
set.status = 500;
return { success: false, error: "Failed to submit contact message" };
}
}, {
body: t.Object({
name: t.String({ minLength: 1 }),
email: t.String({ format: "email" }),
message: t.String({ minLength: 1 })
})
})
.get("/", async () => {
return await prisma.contactMessage.findMany({
orderBy: { createdAt: "desc" }
});
})
.patch("/:id", async ({ params, body, set }) => {
try {
const id = parseInt(params.id);
const { isRead } = body;
const updated = await prisma.contactMessage.update({
where: { id },
data: { isRead }
});
return { success: true, data: updated };
} catch (err) {
console.error(err);
set.status = 500;
return { success: false, error: "Failed to update contact message" };
}
}, {
params: t.Object({
id: t.String()
}),
body: t.Object({
isRead: t.Boolean()
})
});