import "dotenv/config";
import { connect, connection } from "mongoose";
import { StorageProviderSchema } from "../../storage/storage.schema";

// import { StorageProvider , StorageProviderSchema } from 'src/schema/storage-service.schema';

// import {
//   StorageProvider,
//   StorageProviderSchema,
// } from '../../storage/schemas/storage-provider.schema';

const StorageProviderModel = connection.model(
  "StorageProvider",
  StorageProviderSchema,
);
const storageProviders = [
  {
    name: "filesystem",
    active: false,
    config: {
      basePath: "uploads",
      baseUrl: "https://invoiceapi.ibyteworkshop.com/uploads",
    },
  },
  {
    name: "s3",
    active: true,
    config: {
      accessKeyId: process.env.ACE_S3_ACCESS_KEY,
      secretAccessKey: process.env.ACE_S3_SECRET_KEY,
      region: "ap-south-noi-1",
      bucket: "invoiceg2g",
      cdnUrl: "https://s3-noi.aces3.ai/invoiceg2g",
      endpointUrl: "https://s3-noi.aces3.ai",
    },
  },
];

async function seedStorageProviders() {
  try {
    console.log("🌱 Seeding storage providers...");

    await connect(process.env.MONGO_URI as string);

    // ensure only ONE active provider
    await StorageProviderModel.updateMany({}, { $set: { active: false } });

    for (const provider of storageProviders) {
      await StorageProviderModel.updateOne(
        { name: provider.name },
        { $set: provider },
        { upsert: true },
      );

      console.log(`✅ Seeded storage: ${provider.name}`);
    }

    console.log("🎉 Storage providers seeded successfully");
    process.exit(0);
  } catch (err) {
    console.error("❌ Storage provider seeding failed", err);
    process.exit(1);
  } finally {
    await connection.close();
  }
}

seedStorageProviders();
