MCPcopy Create free account
hub / github.com/chirpstack/chirpstack / run_db_migrations

Function run_db_migrations

chirpstack/src/storage/mod.rs:177–225  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

175}
176
177pub async fn run_db_migrations() -> Result<()> {
178 info!("Applying schema migrations");
179
180 let c = get_async_db_conn().await?;
181 let mut c_wrapped: AsyncConnectionWrapper<AsyncDbPoolConnection> =
182 AsyncConnectionWrapper::from(c);
183
184 #[cfg(feature = "postgres")]
185 let _ = task::spawn_blocking(move || -> Result<()> {
186 c_wrapped
187 .run_pending_migrations(MIGRATIONS)
188 .map_err(|e| anyhow!("{}", e))?;
189
190 Ok(())
191 })
192 .await?;
193
194 #[cfg(feature = "sqlite")]
195 let _ = task::spawn_blocking(move || -> Result<()> {
196 use diesel::sql_types::Integer;
197 use diesel::{QueryableByName, RunQueryDsl};
198
199 #[derive(QueryableByName)]
200 struct FkPragma {
201 #[diesel(sql_type = Integer)]
202 foreign_keys: i32,
203 }
204
205 let fk_pragma: i32 = diesel::sql_query("pragma foreign_keys")
206 .get_result::<FkPragma>(&mut c_wrapped)?
207 .foreign_keys;
208 if fk_pragma != 0 {
209 let _ = diesel::sql_query("pragma foreign_keys = 0").execute(&mut c_wrapped)?;
210 }
211
212 c_wrapped
213 .run_pending_migrations(MIGRATIONS)
214 .map_err(|e| anyhow!("{}", e))?;
215
216 if fk_pragma != 0 {
217 let _ = diesel::sql_query("pragma foreign_keys = 1").execute(&mut c_wrapped)?;
218 }
219
220 Ok(())
221 })
222 .await?;
223
224 Ok(())
225}
226
227async fn set_async_redis_pool(p: AsyncRedisPool) {
228 let mut pool_w = ASYNC_REDIS_POOL.write().await;

Callers 1

setupFunction · 0.85

Calls 1

get_async_db_connFunction · 0.70

Tested by

no test coverage detected