Skip to content

Commit a9a7bb5

Browse files
Enhance metadata handling and add static params for documents
- Introduced Metadata type for better type safety in page metadata. - Added generateStaticParams function to fetch document slugs for dynamic routing. - Updated document fetching logic to include slugs in the news section.
1 parent 0a1017b commit a9a7bb5

4 files changed

Lines changed: 17 additions & 3 deletions

File tree

src/app/(sections)/[slug]/page.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { notFound } from 'next/navigation'
33
import { getPageBySlug, getPagesSlugs } from '@/db/api/pages'
44

55
import classes from './page.module.css'
6+
import { Metadata } from 'next'
67

78
export async function generateStaticParams() {
89
const slugs = await getPagesSlugs()
@@ -14,7 +15,7 @@ export const generateMetadata = async ({
1415
params,
1516
}: {
1617
params: Promise<{ slug: string }>
17-
}) => {
18+
}): Promise<Metadata> => {
1819
const { slug } = await params
1920
const page = await getPageBySlug(slug)
2021
return {

src/app/(sections)/news/[slug]/page.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { readDocumentBySlug } from '@/db/api/documents'
1+
import { readDocumentBySlug, readDocumentsSlugs } from '@/db/api/documents'
22
import { Document } from '@/components'
33
import { Metadata } from 'next'
44

@@ -15,6 +15,11 @@ export const generateMetadata = async ({
1515
}
1616
}
1717

18+
export async function generateStaticParams() {
19+
const documentsSlugs = await readDocumentsSlugs()
20+
return documentsSlugs
21+
}
22+
1823
const NewsPage = async ({ params }: { params: Promise<{ slug: string }> }) => {
1924
const { slug } = await params
2025
const document = await readDocumentBySlug(slug)

src/app/(sections)/news/page.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import { readDocuments } from '@/db/api/documents'
22
import Link from 'next/link'
3+
import { Metadata } from 'next'
34
import classes from './page.module.css'
45

5-
export const metadata = {
6+
export const metadata: Metadata = {
67
title: 'Новости',
78
description: 'Новости о болезни Рандю-Ослера',
89
keywords: 'новости, болезнь Рандю-Ослера',

src/db/api/documents.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,13 @@ export const readDocuments = async (searchParams: {
3131
return documentsResponse
3232
}
3333

34+
export const readDocumentsSlugs = async () => {
35+
const documentsSlugs = await db
36+
.select({ slug: documents.slug })
37+
.from(documents)
38+
return documentsSlugs
39+
}
40+
3441
export const readDocumentWithBlocks = async (id: string) => {
3542
// First get the document
3643
const [document] = await db

0 commit comments

Comments
 (0)