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