use anyhow::Result;
use async_trait::async_trait;
use sqlx::PgPool;
mod account_seeder;
mod accounting_post_seeder;
mod cost_center_seeder;
mod emv_qr_config_seeder;
mod bank_check_sequence_seeder;
mod printed_check_seeder;
mod tax_tag_repair_run_seeder;
mod financial_statement_seeder;
mod fiscal_period_seeder;
mod journal_seeder;
mod journal_line_seeder;
mod ledger_seeder;
mod reconciliation_seeder;
mod reconciliation_item_seeder;
mod full_reconcile_seeder;
mod partial_reconcile_seeder;
pub use account_seeder::SeedAccountSeeder;
pub use accounting_post_seeder::SeedAccountingPostSeeder;
pub use cost_center_seeder::SeedCostCenterSeeder;
pub use emv_qr_config_seeder::SeedEmvQrConfigSeeder;
pub use bank_check_sequence_seeder::SeedBankCheckSequenceSeeder;
pub use printed_check_seeder::SeedPrintedCheckSeeder;
pub use tax_tag_repair_run_seeder::SeedTaxTagRepairRunSeeder;
pub use financial_statement_seeder::SeedFinancialStatementSeeder;
pub use fiscal_period_seeder::SeedFiscalPeriodSeeder;
pub use journal_seeder::SeedJournalSeeder;
pub use journal_line_seeder::SeedJournalLineSeeder;
pub use ledger_seeder::SeedLedgerSeeder;
pub use reconciliation_seeder::SeedReconciliationSeeder;
pub use reconciliation_item_seeder::SeedReconciliationItemSeeder;
pub use full_reconcile_seeder::SeedFullReconcileSeeder;
pub use partial_reconcile_seeder::SeedPartialReconcileSeeder;
#[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,
}