appmgr: offline queries

This commit is contained in:
Aiden McClelland
2021-06-23 18:09:15 -06:00
committed by Aiden McClelland
parent 04b9ef8222
commit 351ce2495d
4 changed files with 44 additions and 9 deletions

7
appmgr/Cargo.lock generated
View File

@@ -665,6 +665,9 @@ name = "either"
version = "1.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
dependencies = [
"serde",
]
[[package]]
name = "embassy-os"
@@ -2409,6 +2412,7 @@ dependencies = [
"parking_lot",
"percent-encoding",
"rustls",
"serde",
"sha2 0.9.5",
"smallvec",
"sqlformat",
@@ -2432,9 +2436,12 @@ dependencies = [
"either",
"futures",
"heck",
"hex",
"once_cell",
"proc-macro2 1.0.28",
"quote 1.0.9",
"serde",
"serde_json",
"sha2 0.9.5",
"sqlx-core",
"sqlx-rt",

View File

@@ -82,7 +82,7 @@ serde_toml = { package="toml", version="0.5.8" }
serde_yaml = "0.8.14"
sha2 = "0.9.3"
simple-logging = "2.0"
sqlx = { version="0.5", features=["runtime-tokio-rustls", "sqlite"] }
sqlx = { version="0.5", features=["runtime-tokio-rustls", "sqlite", "offline"] }
thiserror = "1.0.24"
tokio = { version="1.5.0", features=["full"] }
tokio-compat-02 = "0.2.0"

21
appmgr/sqlx-data.json Normal file
View File

@@ -0,0 +1,21 @@
{
"db": "SQLite",
"3e57a0e52b69f33e9411c13b03a5d82c5856d63f0375eb4c23b255a09c54f8b1": {
"query": "SELECT key FROM tor WHERE package = ? AND interface = ?",
"describe": {
"columns": [
{
"name": "key",
"ordinal": 0,
"type_info": "Blob"
}
],
"parameters": {
"Right": 2
},
"nullable": [
false
]
}
}
}

View File

@@ -21,6 +21,7 @@ use crate::{Error, ResultExt};
pub struct RpcContextConfig {
pub bind_rpc: Option<SocketAddr>,
pub bind_ws: Option<SocketAddr>,
pub tor_control: Option<SocketAddr>,
pub db: Option<PathBuf>,
pub secret_store: Option<PathBuf>,
}
@@ -56,21 +57,27 @@ impl RpcContext {
.unwrap_or_else(|| Path::new("/mnt/embassy-os/embassy.db").to_owned()),
)
.await?;
let secret_store = SqlitePool::connect(&format!(
"sqlite://{}",
base.secret_store
.unwrap_or_else(|| Path::new("/mnt/embassy-os/secrets.db").to_owned())
.display()
))
.await?;
let mut db_handle = db.handle();
let lan_handle = Container::new();
lan_handle.set(enable_lan(&mut db_handle).await?).await;
let tor_controller = TorController::init(&mut db_handle).await?;
let tor_controller = TorController::init(
base.tor_control.unwrap_or(([127, 0, 0, 1], 9051).into()),
&mut db_handle,
&mut secret_store.acquire().await?,
)
.await?;
let seed = Arc::new(RpcContextSeed {
bind_rpc: base.bind_rpc.unwrap_or(([127, 0, 0, 1], 5959).into()),
bind_ws: base.bind_ws.unwrap_or(([127, 0, 0, 1], 5960).into()),
db,
secret_store: SqlitePool::connect(&format!(
"sqlite://{}",
base.secret_store
.unwrap_or_else(|| Path::new("/mnt/embassy-os/secrets.db").to_owned())
.display()
))
.await?,
secret_store,
docker: Docker::connect_with_unix_defaults()?,
lan_handle,
tor_controller,