import { notFound } from "next/navigation"; import { allProjects } from "contentlayer/generated"; import { Mdx } from "@/app/components/mdx"; import { Header } from "./header"; import "./mdx.css"; import { ReportView } from "./view"; import Redis from "ioredis"; export const revalidate = 60; type Props = { params: { slug: string; }; }; // Настройка подключения к локальному Redis const redis = new Redis({ host: process.env.REDIS_HOST || "localhost", port: parseInt(process.env.REDIS_PORT || "6379"), password: process.env.REDIS_PASSWORD, }); export async function generateStaticParams(): Promise { return allProjects .filter((p) => p.published) .map((p) => ({ slug: p.slug, })); } export default async function PostPage({ params }: Props) { const slug = params?.slug; const project = allProjects.find((project) => project.slug === slug); if (!project) { notFound(); } // Получаем и преобразуем значение просмотров const views = parseInt( (await redis.get(`projects:${slug}:views`)) || "0", 10 ); return (
); }