backbone_integrations/seeders/
integration_event_seeder.rs1use anyhow::Result;
8use async_trait::async_trait;
9use sqlx::PgPool;
10
11use super::Seeder;
12
13pub struct SeedIntegrationEventSeeder;
19
20impl SeedIntegrationEventSeeder {
21 pub fn new() -> Self {
22 Self
23 }
24}
25
26impl Default for SeedIntegrationEventSeeder {
27 fn default() -> Self {
28 Self::new()
29 }
30}
31
32#[async_trait]
33impl Seeder for SeedIntegrationEventSeeder {
34 fn name(&self) -> &'static str {
35 "SeedIntegrationEventSeeder"
36 }
37
38 fn order(&self) -> i32 {
39 2
40 }
41
42 async fn should_run(&self, pool: &PgPool) -> Result<bool> {
43 let count: (i64,) = sqlx::query_as("SELECT COUNT(*) FROM integrations.integration_events")
45 .fetch_one(pool)
46 .await?;
47 Ok(count.0 == 0)
48 }
49
50 async fn run(&self, pool: &PgPool) -> Result<()> {
51 let sql = include_str!("../../migrations/seeds/integration_event_seed.sql");
53 sqlx::raw_sql(sql).execute(pool).await?;
54 Ok(())
55 }
56
57 async fn rollback(&self, pool: &PgPool) -> Result<()> {
58 sqlx::query("DELETE FROM integrations.integration_events")
59 .execute(pool)
60 .await?;
61 Ok(())
62 }
63}
64
65