29 lines
985 B
JavaScript
29 lines
985 B
JavaScript
/* =====================================================================
|
|
routes/bestseller.js — GET /api/bestseller. 1:1 portiert aus functions/api/bestseller.js,
|
|
D1-Abfrage auf synchrones better-sqlite3 umgestellt.
|
|
===================================================================== */
|
|
|
|
import { Router } from "express";
|
|
import { db } from "../db.js";
|
|
|
|
export const bestsellerRouter = Router();
|
|
|
|
bestsellerRouter.get("/api/bestseller", (req, res) => {
|
|
try {
|
|
const results = db
|
|
.prepare(
|
|
`SELECT oi.produkt_slug AS slug, SUM(oi.menge) AS verkauft
|
|
FROM order_items oi
|
|
JOIN orders o ON o.id = oi.order_id
|
|
WHERE o.status NOT IN ('storniert', 'zahlungOffen') AND oi.gratis = 0
|
|
GROUP BY oi.produkt_slug
|
|
ORDER BY verkauft DESC, slug ASC
|
|
LIMIT 6`
|
|
)
|
|
.all();
|
|
return res.json({ ok: true, slugs: results.map((r) => r.slug) });
|
|
} catch {
|
|
return res.json({ ok: true, slugs: [] });
|
|
}
|
|
});
|