backbone-pos 0.6.0

Point of sale — cashier session, ticket + multi-tender; orchestrates billing (revenue) + payment (settlement), posts no GL directly
Documentation
//! Database seeders for the pos 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 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;

// ============================================================================
// 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
// ============================================================================

// <<< CUSTOM SEEDERS START >>>
// Add custom seeders here
// <<< CUSTOM SEEDERS END >>>