use anyhow::Result;
use async_trait::async_trait;
use sqlx::PgPool;
mod picking_batch_seeder;
mod delivery_note_seeder;
mod delivery_note_item_seeder;
mod inventory_company_setting_seeder;
mod landed_cost_seeder;
mod landed_cost_line_seeder;
mod landed_cost_adjustment_line_seeder;
mod location_seeder;
mod stock_move_seeder;
mod stock_move_line_seeder;
mod operation_type_seeder;
mod transfer_seeder;
mod route_seeder;
mod route_rule_seeder;
mod reordering_rule_seeder;
mod purchase_receipt_seeder;
mod purchase_receipt_item_seeder;
mod quant_seeder;
mod scrap_seeder;
mod scrap_reason_tag_seeder;
mod stock_entry_seeder;
mod stock_entry_item_seeder;
mod stock_ledger_entry_seeder;
mod bin_seeder;
mod stock_reconciliation_seeder;
mod stock_reconciliation_item_seeder;
mod package_type_seeder;
mod storage_category_seeder;
mod storage_category_capacity_seeder;
mod putaway_rule_seeder;
mod lot_seeder;
mod package_seeder;
mod warehouse_seeder;
mod stock_item_seeder;
pub use picking_batch_seeder::SeedPickingBatchSeeder;
pub use delivery_note_seeder::SeedDeliveryNoteSeeder;
pub use delivery_note_item_seeder::SeedDeliveryNoteItemSeeder;
pub use inventory_company_setting_seeder::SeedInventoryCompanySettingSeeder;
pub use landed_cost_seeder::SeedLandedCostSeeder;
pub use landed_cost_line_seeder::SeedLandedCostLineSeeder;
pub use landed_cost_adjustment_line_seeder::SeedLandedCostAdjustmentLineSeeder;
pub use location_seeder::SeedLocationSeeder;
pub use stock_move_seeder::SeedStockMoveSeeder;
pub use stock_move_line_seeder::SeedStockMoveLineSeeder;
pub use operation_type_seeder::SeedOperationTypeSeeder;
pub use transfer_seeder::SeedTransferSeeder;
pub use route_seeder::SeedRouteSeeder;
pub use route_rule_seeder::SeedRouteRuleSeeder;
pub use reordering_rule_seeder::SeedReorderingRuleSeeder;
pub use purchase_receipt_seeder::SeedPurchaseReceiptSeeder;
pub use purchase_receipt_item_seeder::SeedPurchaseReceiptItemSeeder;
pub use quant_seeder::SeedQuantSeeder;
pub use scrap_seeder::SeedScrapSeeder;
pub use scrap_reason_tag_seeder::SeedScrapReasonTagSeeder;
pub use stock_entry_seeder::SeedStockEntrySeeder;
pub use stock_entry_item_seeder::SeedStockEntryItemSeeder;
pub use stock_ledger_entry_seeder::SeedStockLedgerEntrySeeder;
pub use bin_seeder::SeedBinSeeder;
pub use stock_reconciliation_seeder::SeedStockReconciliationSeeder;
pub use stock_reconciliation_item_seeder::SeedStockReconciliationItemSeeder;
pub use package_type_seeder::SeedPackageTypeSeeder;
pub use storage_category_seeder::SeedStorageCategorySeeder;
pub use storage_category_capacity_seeder::SeedStorageCategoryCapacitySeeder;
pub use putaway_rule_seeder::SeedPutawayRuleSeeder;
pub use lot_seeder::SeedLotSeeder;
pub use package_seeder::SeedPackageSeeder;
pub use warehouse_seeder::SeedWarehouseSeeder;
pub use stock_item_seeder::SeedStockItemSeeder;
#[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,
}