backbone-mail 0.2.32

Odoo mail core port — message/notification/followers/activity/alias/sms queue (schema: messaging)
//! Database seeders for the messaging 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 mail_activity_seeder;
mod mail_activity_type_seeder;
mod mail_activity_plan_seeder;
mod mail_activity_plan_template_seeder;
mod mail_alias_domain_seeder;
mod mail_alias_seeder;
mod mail_attachment_seeder;
mod mail_message_attachment_seeder;
mod mail_message_star_seeder;
mod mail_message_seeder;
mod mail_seeder;
mod mail_notification_seeder;
mod mail_message_subtype_seeder;
mod mail_message_reaction_seeder;
mod mail_followers_seeder;
mod mail_presence_seeder;
mod mail_blacklist_seeder;
mod mail_tracking_value_seeder;
mod discuss_channel_seeder;
mod discuss_channel_member_seeder;
mod mail_guest_seeder;
mod mail_server_seeder;
mod fetchmail_server_seeder;
mod mail_gateway_allowed_seeder;
mod phone_blacklist_seeder;
mod mail_message_schedule_seeder;
mod mail_scheduled_message_seeder;
mod sms_seeder;
mod sms_template_seeder;
mod sms_tracker_seeder;

pub use mail_activity_seeder::SeedMailActivitySeeder;
pub use mail_activity_type_seeder::SeedMailActivityTypeSeeder;
pub use mail_activity_plan_seeder::SeedMailActivityPlanSeeder;
pub use mail_activity_plan_template_seeder::SeedMailActivityPlanTemplateSeeder;
pub use mail_alias_domain_seeder::SeedMailAliasDomainSeeder;
pub use mail_alias_seeder::SeedMailAliasSeeder;
pub use mail_attachment_seeder::SeedMailAttachmentSeeder;
pub use mail_message_attachment_seeder::SeedMailMessageAttachmentSeeder;
pub use mail_message_star_seeder::SeedMailMessageStarSeeder;
pub use mail_message_seeder::SeedMailMessageSeeder;
pub use mail_seeder::SeedMailSeeder;
pub use mail_notification_seeder::SeedMailNotificationSeeder;
pub use mail_message_subtype_seeder::SeedMailMessageSubtypeSeeder;
pub use mail_message_reaction_seeder::SeedMailMessageReactionSeeder;
pub use mail_followers_seeder::SeedMailFollowersSeeder;
pub use mail_presence_seeder::SeedMailPresenceSeeder;
pub use mail_blacklist_seeder::SeedMailBlacklistSeeder;
pub use mail_tracking_value_seeder::SeedMailTrackingValueSeeder;
pub use discuss_channel_seeder::SeedDiscussChannelSeeder;
pub use discuss_channel_member_seeder::SeedDiscussChannelMemberSeeder;
pub use mail_guest_seeder::SeedMailGuestSeeder;
pub use mail_server_seeder::SeedMailServerSeeder;
pub use fetchmail_server_seeder::SeedFetchmailServerSeeder;
pub use mail_gateway_allowed_seeder::SeedMailGatewayAllowedSeeder;
pub use phone_blacklist_seeder::SeedPhoneBlacklistSeeder;
pub use mail_message_schedule_seeder::SeedMailMessageScheduleSeeder;
pub use mail_scheduled_message_seeder::SeedMailScheduledMessageSeeder;
pub use sms_seeder::SeedSmsSeeder;
pub use sms_template_seeder::SeedSmsTemplateSeeder;
pub use sms_tracker_seeder::SeedSmsTrackerSeeder;

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