11import { db } from "@/lib/db" ;
22import { events } from "@/lib/db/schema" ;
3- import { eq } from "drizzle-orm" ;
43import { NextResponse } from "next/server" ;
54
65export async function GET ( ) {
@@ -9,8 +8,37 @@ export async function GET() {
98}
109
1110export async function POST ( req : Request ) {
12- const data = await req . json ( ) ;
13- const slug = data . title . toLowerCase ( ) . replace ( / \s + / g, "-" ) ;
14- const created = await db . insert ( events ) . values ( { ...data , slug } ) . returning ( ) ;
11+ const formData = await req . formData ( ) ;
12+
13+ const title = formData . get ( "title" ) as string ;
14+ const description = formData . get ( "description" ) as string ;
15+ const venue = formData . get ( "venue" ) as string ;
16+ const date = formData . get ( "date" ) as string ;
17+ const time = formData . get ( "time" ) as string | null ;
18+
19+ // image may or may not exist
20+ const imageFile = formData . get ( "image" ) as File | null ;
21+ let imageBuffer : Buffer | null = null ;
22+
23+ if ( imageFile ) {
24+ const arrayBuffer = await imageFile . arrayBuffer ( ) ;
25+ imageBuffer = Buffer . from ( arrayBuffer ) ;
26+ }
27+
28+ const slug = title . toLowerCase ( ) . replace ( / \s + / g, "-" ) ;
29+
30+ const created = await db
31+ . insert ( events )
32+ . values ( {
33+ slug,
34+ title,
35+ description,
36+ venue,
37+ date : new Date ( date ) , // timestamp
38+ time : time ?? null ,
39+ image : imageBuffer , // store blob
40+ } )
41+ . returning ( ) ;
42+
1543 return NextResponse . json ( created [ 0 ] , { status : 201 } ) ;
1644}
0 commit comments