1
1
import * as React from "react"
2
+ import type { Metadata } from "next"
2
3
import { notFound , redirect } from "next/navigation"
4
+ import { env } from "@/env"
5
+ import { eq } from "drizzle-orm"
3
6
4
7
import { redirects } from "@/config/constants"
5
8
import { getUserSession } from "@/server/data/user"
6
9
import { getWorkshop } from "@/server/data/workshop"
10
+ import { db } from "@/server/db"
11
+ import { workshops } from "@/server/db/schema"
7
12
import { getExactScheduled } from "@/utils/format-scheduled-date"
8
13
import { Button } from "@/components/ui/button"
9
14
import { Separator } from "@/components/ui/separator"
@@ -22,6 +27,30 @@ interface WorkshopPageProps {
22
27
}
23
28
}
24
29
30
+ export async function generateMetadata ( {
31
+ params,
32
+ } : WorkshopPageProps ) : Promise < Metadata > {
33
+ const workshopId = decodeURIComponent ( params . workshopId )
34
+
35
+ const workshop = await db . query . workshops . findFirst ( {
36
+ columns : {
37
+ title : true ,
38
+ description : true ,
39
+ } ,
40
+ where : eq ( workshops . id , workshopId ) ,
41
+ } )
42
+
43
+ if ( ! workshop ) {
44
+ return { }
45
+ }
46
+
47
+ return {
48
+ metadataBase : new URL ( env . NEXT_PUBLIC_APP_URL ) ,
49
+ title : workshop . title ,
50
+ description : workshop . description ,
51
+ }
52
+ }
53
+
25
54
export default async function WorkshopPage ( { params } : WorkshopPageProps ) {
26
55
const workshopId = decodeURIComponent ( params . workshopId )
27
56
0 commit comments