import { prisma } from "~/server/db";

async function main() {
  const userId = "cleyfmcey0000vlbxj5uracs3";

  const categories = [
    { id: 1, name: "Blusas", description: "Blusas em geral", user_id: userId },
    { id: 2, name: "Calças", description: "Calças em geral", user_id: userId },
  ];
  for (const category of categories) {
    await prisma.category.upsert({
      where: {
        id: category.id,
      },
      create: {
        name: category.name,
        description: category.description,
        user_id: userId,
      },
      update: {},
    });
  }

  const products = [
    {
      id: 1,
      barcode: "5649010514906",
      name: "Blusa Regata",
      category_id: 1,
      user_id: userId,
      cost: 30,
      price: 99,
    },
    {
      id: 2,
      barcode: "1048932316741",
      name: "Blusa Babado",
      category_id: 1,
      user_id: userId,
      cost: 40,
      price: 90.5,
    },
    {
      id: 3,
      barcode: "7103773758847",
      name: "Calça Jeans",
      category_id: 2,
      user_id: userId,
      cost: 35.5,
      price: 60.15,
    },
    {
      id: 4,
      barcode: "6125382089597",
      name: "Calça Moletom",
      category_id: 2,
      user_id: userId,
      cost: 60.2,
      price: 180.9,
    },
  ];
  for (const product of products) {
    const { id, ...productWithoutId } = product;
    await prisma.product.upsert({
      where: {
        id,
      },
      create: productWithoutId,
      update: {},
    });
  }

  const entries = [
    { id: 1, quantity: 8, is_entry: true, product_id: 1, user_id: userId },
    { id: 2, quantity: 7, is_entry: true, product_id: 1, user_id: userId },
    { id: 3, quantity: 2, is_entry: true, product_id: 1, user_id: userId },
    { id: 4, quantity: 20, is_entry: true, product_id: 2, user_id: userId },
    { id: 5, quantity: 8, is_entry: true, product_id: 2, user_id: userId },
    { id: 6, quantity: 2, is_entry: true, product_id: 2, user_id: userId },
    { id: 7, quantity: 1, is_entry: true, product_id: 4, user_id: userId },
    { id: 8, quantity: 5, is_entry: true, product_id: 3, user_id: userId },
  ];

  for (const entry of entries) {
    const { id, ...entryWithoutId } = entry;
    await prisma.inventory.upsert({
      where: {
        id,
      },
      create: entryWithoutId,
      update: {},
    });
  }

  const paymentMethods = [
    { id: 1, name: "Dinheiro", user_id: userId },
    { id: 2, name: "Cartão Crédito", user_id: userId },
    { id: 3, name: "Cartão Débito", user_id: userId },
    { id: 4, name: "Promissoria", user_id: userId },
  ];

  for (const payment of paymentMethods) {
    const { id, ...paymentWithoutId } = payment;
    await prisma.paymentMethod.upsert({
      where: {
        id,
      },
      create: paymentWithoutId,
      update: {},
    });
  }
}

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