backbone-inventory 0.17.2

Inventory: stock ledger of record (SLE) + moving-average valuation; emits COGS/asset AccountingPost (Delivery/Receipt -> GL)
Documentation
//! Database seeders for the inventory module
//!
//! Generated by metaphor-schema. Do not edit manually.
//!
//! This module provides seed data for initial database setup.
//! Seeders can be run via the seeder binary or CLI.

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;

// ============================================================================
// SEEDER TRAIT
// ============================================================================

/// Trait for database seeders
#[async_trait]
pub trait Seeder {
    /// Get the name of this seeder
    fn name(&self) -> &'static str;

    /// Get the order in which this seeder should run
    fn order(&self) -> i32;

    /// Check if this seeder should run (e.g., check if data already exists)
    async fn should_run(&self, pool: &PgPool) -> Result<bool>;

    /// Run the seeder
    async fn run(&self, pool: &PgPool) -> Result<()>;

    /// Rollback the seeder (optional)
    async fn rollback(&self, _pool: &PgPool) -> Result<()> {
        Ok(())
    }
}

// ============================================================================
// SEEDER TYPE
// ============================================================================

/// Type of seeder
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum SeederType {
    /// Reference data (required for application to function)
    Reference,
    /// Initial production data
    Production,
    /// Development/testing data
    Development,
    /// Test data (for automated tests)
    Test,
}

// ============================================================================
// CUSTOM SEEDERS
// ============================================================================

// Add custom seeders here