// this is for connecting to the database
import mongoose, { Schema } from 'mongoose'; // Import Schema
import dotenv from 'dotenv';

dotenv.config();

export async function testDatabaseConnection() {
  try {
    await mongoose.connect(process.env.MONGODB_URI as string);
    console.log('MongoDB Connection Successful!');

    // Define a simple schema for the "test" collection
    const testSchema = new Schema({
      name: String,
      value: Number,
    });

    // Create a model based on the schema
    const TestModel = mongoose.model('Test', testSchema);

    // Insert a single document with a random value
    const singleData = { name: 'Random Item', value: Math.floor(Math.random() * 100) }; // Random number between 0 and 99

    const createdItem = await TestModel.create(singleData);
    console.log('Single document inserted into "test" collection.', createdItem);

    // Optionally, retrieve and log the inserted data
    const insertedData = await TestModel.find();
    console.log('Inserted data:', insertedData);

    // Disconnect from the database
    // await mongoose.disconnect();
    // console.log('MongoDB Disconnected.');

  } catch (error) {
    console.error('MongoDB Connection or Test Failed:', error);
  }
}

let cachedConnection: mongoose.Connection | null = null;

export async function connectToDatabase() {
  if (cachedConnection) {
    return cachedConnection;
  }

  try {
    await mongoose.connect(process.env.MONGODB_URI as string);
    console.log('MongoDB Connected');
    cachedConnection = mongoose.connection;
    return cachedConnection;
  } catch (error) {
    console.error('MongoDB Connection Error:', error);
    throw error;
  }
}

// export default 