import * as mongoose from 'mongoose';
import * as dotenv from 'dotenv';
dotenv.config();

const categories = [
  {
    name: { en: 'Weight & Reps', de: 'Gewicht & Wdh.' },
    fields: [
      { key: 'weight', label: { en: 'Weight', de: 'Gewicht' }, unit: 'kg', type: 'number' },
      { key: 'reps',   label: { en: 'Reps',   de: 'Wdh.'    }, unit: '',   type: 'number' },
    ],
  },
  {
    name: { en: 'Reps Only', de: 'Nur Wdh.' },
    fields: [
      { key: 'reps', label: { en: 'Reps', de: 'Wdh.' }, unit: '', type: 'number' },
    ],
  },
  {
    name: { en: 'Time / Hold Time', de: 'Zeit / Haltezeit' },
    fields: [
      { key: 'duration', label: { en: 'Duration', de: 'Dauer' }, unit: 'min', type: 'time' },
    ],
  },
  {
    name: { en: 'Distance & Time', de: 'Distanz & Zeit' },
    fields: [
      { key: 'distance', label: { en: 'Distance', de: 'Distanz' }, unit: 'km',  type: 'number' },
      { key: 'duration', label: { en: 'Time',     de: 'Zeit'    }, unit: 'min', type: 'time'   },
    ],
  },
  {
    name: { en: 'Assisted Bodyweight', de: 'Unterstütztes Körpergewicht' },
    fields: [
      { key: 'assistance', label: { en: 'Assistance', de: 'Unterstützung' }, unit: 'kg', type: 'number' },
      { key: 'reps',       label: { en: 'Reps',       de: 'Wdh.'          }, unit: '',   type: 'number' },
    ],
  },
  {
    name: { en: 'Weighted Bodyweight', de: 'Gewichtetes Körpergewicht' },
    fields: [
      { key: 'weight', label: { en: 'Weight', de: 'Gewicht' }, unit: 'kg', type: 'number' },
      { key: 'reps',   label: { en: 'Reps',   de: 'Wdh.'    }, unit: '',   type: 'number' },
    ],
  },
];

async function run() {
  const uri = process.env.MONGO_URI || 'mongodb://localhost:27017/lifther';
  await mongoose.connect(uri);
  const db = mongoose.connection.db;
  console.log('Connected to DB:', uri);
  console.log(`Seeding ${categories.length} exercise categories...`);

  let inserted = 0;
  let skipped = 0;

  for (const cat of categories) {
    const exists = await db.collection('exercisecategories').findOne({ 'name.en': cat.name.en });
    if (!exists) {
      await db.collection('exercisecategories').insertOne({
        ...cat,
        status: 1,
        deleted_at: null,
        createdAt: new Date(),
        updatedAt: new Date(),
      });
      inserted++;
      console.log(`  ✅ Inserted: ${cat.name.en}`);
    } else {
      skipped++;
      console.log(`  ⏭️  Skipped (exists): ${cat.name.en}`);
    }
  }

  console.log(`\nDone! Inserted: ${inserted}, Skipped: ${skipped}`);
  await mongoose.disconnect();
}

run().catch((err) => {
  console.error('Seeder error:', err);
  process.exit(1);
});
