92 lines
2.6 KiB
TypeScript
92 lines
2.6 KiB
TypeScript
// scripts/seed-test-drones.ts
|
|
// Seed mock drone registrations for testing
|
|
|
|
import mongoose from 'mongoose';
|
|
import { DroneRegistration } from '../src/models/drone-registration.js';
|
|
|
|
async function seedTestDrones() {
|
|
try {
|
|
await mongoose.connect('mongodb://localhost:27017/gadget-code');
|
|
console.log('Connected to MongoDB');
|
|
|
|
// Find the test user
|
|
const User = (await import('../src/models/user.js')).default;
|
|
const testUser = await User.findOne({ email_lc: 'rob@digitaltelepresence.com' });
|
|
|
|
if (!testUser) {
|
|
console.error('Test user not found');
|
|
process.exit(1);
|
|
}
|
|
|
|
console.log(`Found test user: ${testUser.email}`);
|
|
|
|
// Create mock drones
|
|
const mockDrones = [
|
|
{
|
|
hostname: 'drone-alpha',
|
|
workspaceDir: '/home/rob/workspaces/drone-alpha',
|
|
status: 'available',
|
|
workspaceId: 'workspace-alpha-001',
|
|
},
|
|
{
|
|
hostname: 'drone-beta',
|
|
workspaceDir: '/home/rob/workspaces/drone-beta',
|
|
status: 'available',
|
|
workspaceId: 'workspace-beta-002',
|
|
},
|
|
{
|
|
hostname: 'drone-gamma',
|
|
workspaceDir: '/home/rob/workspaces/drone-gamma',
|
|
status: 'busy',
|
|
workspaceId: 'workspace-gamma-003',
|
|
},
|
|
{
|
|
hostname: 'drone-offline-1',
|
|
workspaceDir: '/home/rob/workspaces/drone-offline-1',
|
|
status: 'offline',
|
|
workspaceId: 'workspace-offline-004',
|
|
},
|
|
{
|
|
hostname: 'drone-offline-2',
|
|
workspaceDir: '/home/rob/workspaces/drone-offline-2',
|
|
status: 'offline',
|
|
workspaceId: 'workspace-offline-005',
|
|
},
|
|
];
|
|
|
|
// Delete existing test drones
|
|
await DroneRegistration.deleteMany({
|
|
hostname: { $in: mockDrones.map(d => d.hostname) },
|
|
user: testUser._id,
|
|
});
|
|
console.log('Cleared existing test drones');
|
|
|
|
// Create new mock drones
|
|
const created = [];
|
|
for (const droneData of mockDrones) {
|
|
const drone = new DroneRegistration({
|
|
...droneData,
|
|
user: testUser._id,
|
|
createdAt: new Date(),
|
|
updatedAt: new Date(),
|
|
});
|
|
await drone.save();
|
|
created.push(drone);
|
|
console.log(`Created drone: ${drone.hostname} (${drone.status})`);
|
|
}
|
|
|
|
console.log(`\n✅ Seeded ${created.length} test drones`);
|
|
console.log(' - 2 available drones');
|
|
console.log(' - 1 busy drone');
|
|
console.log(' - 2 offline drones');
|
|
|
|
await mongoose.disconnect();
|
|
process.exit(0);
|
|
} catch (error) {
|
|
console.error('Error seeding drones:', error);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
seedTestDrones();
|