Skip to main content

tuwunel_service/migrations/
import_conduit_knocks.rs

1use tuwunel_core::{Result, result::NotFound};
2
3use super::conduit::migrate_conduit_knocks;
4use crate::Services;
5
6/// Imports a Conduit database's pending knocks once.
7///
8/// Gated on its own marker and the source column's presence, it runs only for a
9/// Conduit database and
10/// only the first time; a re-import would resurrect a knock the user later
11/// resolved.
12pub(super) async fn import_conduit_knocks(services: &Services) -> Result {
13	let db = &services.db;
14
15	let pending = db["global"]
16		.get(b"imported_conduit_knocks")
17		.await
18		.is_not_found();
19
20	if pending && db.open_cf("roomuserid_knockcount")?.is_some() {
21		migrate_conduit_knocks(services).await?;
22		db["global"].insert(b"imported_conduit_knocks", []);
23	}
24
25	Ok(())
26}