use anyhow::Result;
use async_trait::async_trait;
use sqlx::PgPool;
mod attribute_seeder;
mod attribute_value_seeder;
mod brand_seeder;
mod item_seeder;
mod item_group_seeder;
mod item_variant_seeder;
mod uom_seeder;
mod uom_conversion_seeder;
pub use attribute_seeder::SeedAttributeSeeder;
pub use attribute_value_seeder::SeedAttributeValueSeeder;
pub use brand_seeder::SeedBrandSeeder;
pub use item_seeder::SeedItemSeeder;
pub use item_group_seeder::SeedItemGroupSeeder;
pub use item_variant_seeder::SeedItemVariantSeeder;
pub use uom_seeder::SeedUomSeeder;
pub use uom_conversion_seeder::SeedUomConversionSeeder;
#[async_trait]
pub trait Seeder {
fn name(&self) -> &'static str;
fn order(&self) -> i32;
async fn should_run(&self, pool: &PgPool) -> Result<bool>;
async fn run(&self, pool: &PgPool) -> Result<()>;
async fn rollback(&self, _pool: &PgPool) -> Result<()> {
Ok(())
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum SeederType {
Reference,
Production,
Development,
Test,
}