use diesel::prelude::*;
use diesel_libsql::LibSqlConnection;
diesel::table! {
users (id) {
id -> Integer,
name -> Text,
}
}
fn remote_url() -> String {
std::env::var("LIBSQL_URL").expect("LIBSQL_URL must be set for remote tests")
}
fn auth_token() -> String {
std::env::var("LIBSQL_AUTH_TOKEN").expect("LIBSQL_AUTH_TOKEN must be set for remote tests")
}
#[test]
#[ignore]
fn test_remote_crud() {
let url = format!("{}?authToken={}", remote_url(), auth_token());
let mut conn = LibSqlConnection::establish(&url).expect("Failed to connect to remote");
diesel::sql_query(
"CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL)",
)
.execute(&mut conn)
.expect("Failed to create table");
diesel::sql_query("DELETE FROM users")
.execute(&mut conn)
.expect("Failed to clean up");
diesel::sql_query("INSERT INTO users (name) VALUES ('remote_alice')")
.execute(&mut conn)
.expect("Failed to insert");
let results: Vec<(i32, String)> = users::table
.select((users::id, users::name))
.filter(users::name.eq("remote_alice"))
.load(&mut conn)
.expect("Failed to select");
assert!(!results.is_empty());
assert_eq!(results[0].1, "remote_alice");
diesel::update(users::table.filter(users::name.eq("remote_alice")))
.set(users::name.eq("remote_bob"))
.execute(&mut conn)
.expect("Failed to update");
let results: Vec<(i32, String)> = users::table
.select((users::id, users::name))
.filter(users::name.eq("remote_bob"))
.load(&mut conn)
.expect("Failed to select after update");
assert!(!results.is_empty());
assert_eq!(results[0].1, "remote_bob");
diesel::delete(users::table.filter(users::name.eq("remote_bob")))
.execute(&mut conn)
.expect("Failed to delete");
let results: Vec<(i32, String)> = users::table
.select((users::id, users::name))
.filter(users::name.eq("remote_bob"))
.load(&mut conn)
.expect("Failed to select after delete");
assert!(results.is_empty());
}
#[test]
#[ignore]
fn test_remote_auth_from_env() {
std::env::set_var("LIBSQL_AUTH_TOKEN", auth_token());
let url = remote_url();
let mut conn = LibSqlConnection::establish(&url).expect("Failed to connect with env token");
diesel::sql_query("SELECT 1")
.execute(&mut conn)
.expect("Failed to execute query");
}