import fs from "fs";
import path from "path";
import { PrismaClient } from "@prisma/client";

const prisma = new PrismaClient();

async function main() {
  const data = {
    users: await prisma.user.findMany({
      include: {
        profile: true,
        _count: { select: { followers: true, follows: true } },
      },
    }),
    listings: await prisma.listing.findMany(),
    auctions: await prisma.auction.findMany({
      include: {
        bids: { include: { bidder: true }, orderBy: { createdAt: "desc" } },
        _count: { select: { bids: true } },
      },
    }),
    posts: await prisma.post.findMany({
      include: {
        author: { include: { profile: true } },
        replies: { include: { author: true }, orderBy: { createdAt: "asc" } },
      },
    }),
    wholesaleLots: await prisma.wholesaleLot.findMany(),
    follows: await prisma.follow.findMany(),
  };

  const outDir = path.join(process.cwd(), "data");
  fs.mkdirSync(outDir, { recursive: true });
  const out = path.join(outDir, "demo.json");
  fs.writeFileSync(out, JSON.stringify(data));
  console.log(
    `Wrote ${out} · users ${data.users.length} · listings ${data.listings.length} · auctions ${data.auctions.length} · posts ${data.posts.length}`,
  );
}

main()
  .catch((err) => {
    console.error(err);
    process.exit(1);
  })
  .finally(async () => {
    await prisma.$disconnect();
  });
