Skip to main content

backbone_maintenance/seeders/
mod.rs

1//! Database seeders for the maintenance module
2//!
3//! Generated by metaphor-schema. Do not edit manually.
4//!
5//! This module provides seed data for initial database setup.
6//! Seeders can be run via the seeder binary or CLI.
7
8use anyhow::Result;
9use async_trait::async_trait;
10use sqlx::PgPool;
11
12mod maintenance_request_seeder;
13mod maintenance_schedule_seeder;
14mod maintenance_stage_seeder;
15mod maintenance_visit_seeder;
16mod maintenance_visit_part_seeder;
17
18pub use maintenance_request_seeder::SeedMaintenanceRequestSeeder;
19pub use maintenance_schedule_seeder::SeedMaintenanceScheduleSeeder;
20pub use maintenance_stage_seeder::SeedMaintenanceStageSeeder;
21pub use maintenance_visit_seeder::SeedMaintenanceVisitSeeder;
22pub use maintenance_visit_part_seeder::SeedMaintenanceVisitPartSeeder;
23
24// ============================================================================
25// SEEDER TRAIT
26// ============================================================================
27
28/// Trait for database seeders
29#[async_trait]
30pub trait Seeder {
31    /// Get the name of this seeder
32    fn name(&self) -> &'static str;
33
34    /// Get the order in which this seeder should run
35    fn order(&self) -> i32;
36
37    /// Check if this seeder should run (e.g., check if data already exists)
38    async fn should_run(&self, pool: &PgPool) -> Result<bool>;
39
40    /// Run the seeder
41    async fn run(&self, pool: &PgPool) -> Result<()>;
42
43    /// Rollback the seeder (optional)
44    async fn rollback(&self, _pool: &PgPool) -> Result<()> {
45        Ok(())
46    }
47}
48
49// ============================================================================
50// SEEDER TYPE
51// ============================================================================
52
53/// Type of seeder
54#[derive(Debug, Clone, Copy, PartialEq, Eq)]
55pub enum SeederType {
56    /// Reference data (required for application to function)
57    Reference,
58    /// Initial production data
59    Production,
60    /// Development/testing data
61    Development,
62    /// Test data (for automated tests)
63    Test,
64}
65
66// ============================================================================
67// CUSTOM SEEDERS
68// ============================================================================
69
70// <<< CUSTOM SEEDERS START >>>
71// Add custom seeders here
72// <<< CUSTOM SEEDERS END >>>