Skip to main content

tuwunel_service/migrations/
import_conduit_knocks.rs

1use tuwunel_core::Result;
2
3use super::{conduit::migrate_conduit_knocks, pending};
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	services.server.check_running()?;
14
15	let db = &services.db;
16
17	if db.open_cf("roomuserid_knockcount")?.is_some()
18		&& pending(services, "imported_conduit_knocks").await?
19	{
20		migrate_conduit_knocks(services).await?;
21		db["global"].insert("imported_conduit_knocks", []);
22	}
23
24	Ok(())
25}