Files
Wabenhain/src/lib/newsletter-discount.ts
T
Nick Szaunig c7927f2883 feat: Wabenhain Honig-Shop Anwendung
Vollstaendige Next.js/Prisma-E-Commerce-Anwendung fuer eine Imkerei:
Shop, Warenkorb, Stripe-Checkout, Kundenkonto mit 2FA, Admin-Bereich
(Produkte, Ernten, Chargen, Bestellungen, Gutscheine, admin-editierbare
Website-Inhalte), i18n (DE/EN), Rate-Limiting/CSP/Audit-Log-Haertung,
PostgreSQL- und MySQL-Unterstuetzung ueber austauschbare Prisma-
Treiber-Adapter, Unit-/Komponenten-/E2E-Tests.
2026-08-17 14:30:28 +02:00

26 lines
1.0 KiB
TypeScript

import { prisma } from "@/lib/prisma";
// Fester Willkommensrabatt-Code fuer neu bestaetigte Newsletter-Abonnenten.
// Bewusst EIN geteilter Code statt eines pro Kunde generierten (Schema hat
// keine Kunden-Bindung an DiscountCode) — analog zu oeffentlich bekannten
// "WELCOME10"-Codes bei anderen Shops. minOrderCents/PERCENT-Wert sind eine
// Einschaetzung und lassen sich im Admin-Bereich (DiscountCode-Verwaltung)
// jederzeit nachjustieren.
export const NEWSLETTER_DISCOUNT_CODE = "WILLKOMMEN10";
export const NEWSLETTER_DISCOUNT_PERCENT = 10;
export const NEWSLETTER_DISCOUNT_MIN_ORDER_CENTS = 2000;
/** Idempotent — legt den Willkommensrabatt-Code an, falls er noch nicht existiert. */
export async function ensureNewsletterDiscountCode(): Promise<void> {
await prisma.discountCode.upsert({
where: { code: NEWSLETTER_DISCOUNT_CODE },
create: {
code: NEWSLETTER_DISCOUNT_CODE,
type: "PERCENT",
value: NEWSLETTER_DISCOUNT_PERCENT,
minOrderCents: NEWSLETTER_DISCOUNT_MIN_ORDER_CENTS,
},
update: {},
});
}