Files
wehub-resource-sync 8c89588461
CI / Coverage (push) Has been cancelled
CI / Format (push) Has been cancelled
CI / Clippy (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Nix Build (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:16:47 +08:00

83 lines
2.1 KiB
Rust

mod seeders;
use clap::Parser;
use gittype::{
infrastructure::database::database::{Database, DatabaseInterface},
Result,
};
use seeders::DatabaseSeeder;
use std::sync::Arc;
#[derive(Parser)]
#[command(name = "seed_database")]
#[command(about = "Populate database with seed data for development")]
struct Args {
/// Clear existing data before seeding
#[arg(long)]
clear: bool,
/// Number of repositories to generate
#[arg(long, default_value = "10")]
repos: usize,
/// Number of sessions to generate
#[arg(long, default_value = "1000")]
sessions: usize,
/// Number of stages to generate
#[arg(long, default_value = "3000")]
stages: usize,
}
fn main() -> Result<()> {
let args = Args::parse();
println!("🌱 Starting database seeding...");
let db = Database::new()?;
let database: Arc<dyn DatabaseInterface> = Arc::new(db);
// Initialize database tables if needed
database.init_tables()?;
if args.clear {
println!("🧹 Clearing existing data...");
clear_database(&database)?;
}
println!(
"📊 Generating {} repositories, {} sessions, {} stages...",
args.repos, args.sessions, args.stages
);
let seeder = DatabaseSeeder::new(database);
seeder.seed_with_counts(args.repos, args.sessions, args.stages)?;
println!("✅ Seed data has been successfully loaded!");
println!("💡 You can now use the application with sample data for development and testing.");
Ok(())
}
fn clear_database(database: &Arc<dyn DatabaseInterface>) -> Result<()> {
let conn = database.get_connection()?;
// Disable foreign key checks temporarily
conn.execute("PRAGMA foreign_keys = OFF", [])?;
let tables = vec![
"stage_results",
"session_results",
"stages",
"challenges",
"sessions",
"repositories",
];
for table in tables {
conn.execute(&format!("DELETE FROM {}", table), [])?;
}
// Re-enable foreign key checks
conn.execute("PRAGMA foreign_keys = ON", [])?;
Ok(())
}