-
Szymon Zimnowoda authored
Drop old sql-like migrations Add schema versioning Use new API to define POD specific types and meta tables
2175bba6
use r2d2_sqlite::SqliteConnectionManager;
use secrecy::Secret;
use std::{
net::{IpAddr, Ipv4Addr},
time::Duration,
};
use uuid::Uuid;
use crate::{
async_db_connection::AsyncConnection, command_line_interface::CliOptions, error::Result,
global_static::get_cached_schema, v5::migrations_api,
};
pub async fn get_memory_connection() -> Result<AsyncConnection> {
let manager = SqliteConnectionManager::memory();
let pool = r2d2::Pool::builder()
.max_size(1)
.connection_timeout(Duration::from_secs(5))
.build(manager)?;
let conn = pool.get()?;
conn.execute_batch(
"
PRAGMA foreign_keys = ON;
",
)?;
let mut conn = AsyncConnection::new(Uuid::new_v4().simple().to_string().into(), conn);
migrations_api::update_schema(&mut conn).await?;
get_cached_schema().init(&mut conn).await?;
Ok(conn)
}
pub fn default_cli() -> CliOptions {
CliOptions {
port: 3030,
owners: "ANY".to_string(),
use_kubernetes: false,
kubernetes_plugin_limit_per_owner: 5,
kubernetes_ignore_limits: false,
plugins_callback_address: None,
pod_allowed_origins: vec!["*".to_string()],
plugins_public_domain: None,
plugins_docker_network: None,
insecure_plugin_script: Vec::new(),
tls_pub_crt: "".to_string(),
tls_priv_key: "".to_string(),
non_tls: true,
insecure_non_tls: Some(IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0))),
shared_server: false,
email_smtp_relay: None,
email_smtp_port: 465,
email_smtp_user: None,
email_smtp_password: None,
email_smtp_sender_address: None,
owner_key_for_pod: Default::default(),
db_key_for_pod: Secret::new(String::default()),
shared_plugins: Vec::new(),
opened_connections: None,
owner_key_for_example_data: None,
db_key_for_example_data: None,
plugin_auth_key: Secret::new(String::default()),
}
}