use anyhow::Result;
use async_trait::async_trait;
use sqlx::PgPool;
mod pos_closing_entry_seeder;
mod pos_invoice_seeder;
mod pos_invoice_item_seeder;
mod pos_payment_seeder;
mod pos_profile_seeder;
mod pos_opening_entry_seeder;
mod pos_cash_movement_seeder;
mod pos_discount_seeder;
mod pos_manager_pin_seeder;
mod pos_floor_plan_seeder;
mod pos_table_seeder;
pub use pos_closing_entry_seeder::SeedPosClosingEntrySeeder;
pub use pos_invoice_seeder::SeedPosInvoiceSeeder;
pub use pos_invoice_item_seeder::SeedPosInvoiceItemSeeder;
pub use pos_payment_seeder::SeedPosPaymentSeeder;
pub use pos_profile_seeder::SeedPosProfileSeeder;
pub use pos_opening_entry_seeder::SeedPosOpeningEntrySeeder;
pub use pos_cash_movement_seeder::SeedPosCashMovementSeeder;
pub use pos_discount_seeder::SeedPosDiscountSeeder;
pub use pos_manager_pin_seeder::SeedPosManagerPinSeeder;
pub use pos_floor_plan_seeder::SeedPosFloorPlanSeeder;
pub use pos_table_seeder::SeedPosTableSeeder;
#[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,
}