import "dotenv/config";
import { PrismaClient } from "../src/generated/prisma/client";
import { PrismaMariaDb } from "@prisma/adapter-mariadb";
import { roleSeeder } from "./seeders/role.seed";
import { userSeeder } from "./seeders/user.seed";
import { shopSeeder } from "./seeders/shop.seed";
import { vegetableSeeder } from "./seeders/vegetable.seed";
import { stateSeeder } from "./seeders/state.seed";
import { districtSeeder } from "./seeders/district.seed";

const databaseUrl = process.env["DATABASE_URL"];
if (!databaseUrl) {
  throw new Error("DATABASE_URL must be provided in the environment.");
}

const prisma = new PrismaClient({
  adapter: new PrismaMariaDb(databaseUrl),
});

async function main() {
  console.log("🌱 Seeding started...");

  await roleSeeder(prisma);
  await userSeeder(prisma);
  await shopSeeder(prisma);
  await vegetableSeeder(prisma);
  await stateSeeder(prisma);
  await districtSeeder(prisma);

  console.log("✅ Seeding completed.");
}

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