use anyhow::Result;
use async_trait::async_trait;
use sqlx::PgPool;
mod access_log_seeder;
mod bucket_seeder;
mod content_hash_seeder;
mod conversion_job_seeder;
mod file_comment_seeder;
mod file_lock_seeder;
mod file_share_seeder;
mod file_version_seeder;
mod processing_job_seeder;
mod stored_file_seeder;
mod thumbnail_seeder;
mod upload_session_seeder;
mod user_quota_seeder;
pub use access_log_seeder::SeedAccessLogSeeder;
pub use bucket_seeder::SeedBucketSeeder;
pub use content_hash_seeder::SeedContentHashSeeder;
pub use conversion_job_seeder::SeedConversionJobSeeder;
pub use file_comment_seeder::SeedFileCommentSeeder;
pub use file_lock_seeder::SeedFileLockSeeder;
pub use file_share_seeder::SeedFileShareSeeder;
pub use file_version_seeder::SeedFileVersionSeeder;
pub use processing_job_seeder::SeedProcessingJobSeeder;
pub use stored_file_seeder::SeedStoredFileSeeder;
pub use thumbnail_seeder::SeedThumbnailSeeder;
pub use upload_session_seeder::SeedUploadSessionSeeder;
pub use user_quota_seeder::SeedUserQuotaSeeder;
#[async_trait]
pub trait Seeder {
fn name(&self) -> &'static str;
fn order(&self) -> i32;
async fn should_run(&self, pool: &PgPool) -> Result<bool>;
async fn run(&self, pool: &PgPool) -> Result<()>;
async fn rollback(&self, _pool: &PgPool) -> Result<()> {
Ok(())
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum SeederType {
Reference,
Production,
Development,
Test,
}