1use crate::sql::AnyPool;
2use crate::colored::Colorize;
3
4#[crate::async_trait]
5pub trait SeederTrait: Send + Sync {
6 async fn run<'a>(&'a self, db: &'a crate::sql::AnyPool) -> Result<(), crate::sql::Error>;
7}
8
9pub async fn run_seeders(db: &AnyPool, seeders: Vec<Box<dyn SeederTrait + Send + Sync>>) {
10 println!("\n{}", "🌱 Menjalankan Seeder Database...".blue().bold());
11
12 for seeder in seeders {
13 if let Err(e) = seeder.run(db).await {
14 println!("{} {}", "❌ Gagal menjalankan seeder:".red(), e);
15 }
16 }
17
18 println!("{}", "✅ Semua seeder selesai diproses!".green().bold());
19}