backbone_support/seeders/mod.rs
1//! Database seeders for the support 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 issue_seeder;
13mod service_level_agreement_seeder;
14mod service_level_priority_seeder;
15mod warranty_claim_seeder;
16
17pub use issue_seeder::SeedIssueSeeder;
18pub use service_level_agreement_seeder::SeedServiceLevelAgreementSeeder;
19pub use service_level_priority_seeder::SeedServiceLevelPrioritySeeder;
20pub use warranty_claim_seeder::SeedWarrantyClaimSeeder;
21
22// ============================================================================
23// SEEDER TRAIT
24// ============================================================================
25
26/// Trait for database seeders
27#[async_trait]
28pub trait Seeder {
29 /// Get the name of this seeder
30 fn name(&self) -> &'static str;
31
32 /// Get the order in which this seeder should run
33 fn order(&self) -> i32;
34
35 /// Check if this seeder should run (e.g., check if data already exists)
36 async fn should_run(&self, pool: &PgPool) -> Result<bool>;
37
38 /// Run the seeder
39 async fn run(&self, pool: &PgPool) -> Result<()>;
40
41 /// Rollback the seeder (optional)
42 async fn rollback(&self, _pool: &PgPool) -> Result<()> {
43 Ok(())
44 }
45}
46
47// ============================================================================
48// SEEDER TYPE
49// ============================================================================
50
51/// Type of seeder
52#[derive(Debug, Clone, Copy, PartialEq, Eq)]
53pub enum SeederType {
54 /// Reference data (required for application to function)
55 Reference,
56 /// Initial production data
57 Production,
58 /// Development/testing data
59 Development,
60 /// Test data (for automated tests)
61 Test,
62}
63
64// ============================================================================
65// CUSTOM SEEDERS
66// ============================================================================
67
68// Add custom seeders here
69