import dotenv from "dotenv";
dotenv.config();
import { MongoClient } from "mongodb";
const uri = process.env.MONGODB_URI || "";
const options = {
  maxPoolSize: 10,
};
const dbName = process.env.MONGODB_DB; // change this to prod db when needed
async function migrateData() {
  const MODULE_ARRAY = ["reading", "listening", "writing", "speaking", "level"];
  const client = new MongoClient(uri, options);

  try {
    await client.connect();
    console.log("Connected to MongoDB");
    if (!process.env.MONGODB_DB) {
      throw new Error("Missing env var: MONGODB_DB");
    }
    const db = client.db(dbName);
    for (const string of MODULE_ARRAY) {
      const collection = db.collection(string);
      const result = await collection.updateMany(
        { private: { $exists: false } },
        { $set: { access: "public" } }
      );
      const result2 = await collection.updateMany(
        { private: true },
        { $set: { access: "private" }, $unset: { private: "" } }
      );
      const result1 = await collection.updateMany(
        { private: { $exists: true } },
        { $set: { access: "public" } }
      );
      console.log(
        `Updated ${
          result.modifiedCount + result1.modifiedCount
        } documents to "access: public" in ${string}`
      );
      console.log(
        `Updated ${result2.modifiedCount} documents to "access: private" and removed private var in ${string}`
      );
    }
    console.log("Migration completed successfully!");
  } catch (error) {
    console.error("Migration failed:", error);
  } finally {
    await client.close();
    console.log("MongoDB connection closed.");
  }
}
//migrateData(); // uncomment to run the migration
