import { Prisma } from "@prisma/client";
import { searchSchema } from "@tomodachi-share/shared/schemas";
import { prisma } from "@/lib/prisma";
import MiiGrid from "./mii-grid";
interface Props {
searchParams: { [key: string]: string | string[] | undefined };
}
export default async function MiiList({ searchParams }: Props) {
const parsed = searchSchema.safeParse(searchParams);
if (!parsed.success) return
{parsed.error.issues[0].message}
;
const { page = 1, limit = 100 } = parsed.data;
const skip = (page - 1) * limit;
let totalCount: number;
let miis: Prisma.MiiGetPayload<{ include: { user: { select: { id: true; name: true } } } }>[];
[totalCount, miis] = await Promise.all([
prisma.mii.count({ where: { in_queue: true } }),
prisma.mii.findMany({
where: { in_queue: true },
include: { user: { select: { id: true, name: true } } },
orderBy: [{ createdAt: "asc" }, { name: "asc" }],
skip,
take: limit,
}),
]);
const lastPage = Math.ceil(totalCount / limit);
return ;
}