#[cfg(feature = "sqlite")]
#[test]
fn test_sqlite_integration() {
use rustbasic_core::sql::driver::sqlite::SqliteConnection;
use rustbasic_core::sql_params;
let mut conn = SqliteConnection::connect(":memory:").unwrap();
conn.execute(
"CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)",
&[]
).unwrap();
let res = conn.execute(
"INSERT INTO users (name, age) VALUES (?, ?)",
&sql_params!["Alice", 30]
).unwrap();
assert_eq!(res.rows_affected, 1);
assert!(res.last_insert_id > 0);
let rows = conn.query("SELECT id, name, age FROM users WHERE age = ?", &sql_params![30]).unwrap();
assert_eq!(rows.len(), 1);
let name: String = rows[0].get("name");
let age: i64 = rows[0].get("age");
assert_eq!(name, "Alice");
assert_eq!(age, 30);
}
#[cfg(feature = "mysql")]
#[test]
fn test_mysql_connection_real() {
use rustbasic_core::sql::driver::mysql::MySqlPool;
use rustbasic_core::sql::driver::SqlConnection;
use rustbasic_core::sql_params;
let setup_pool = MySqlPool::new("127.0.0.1", 3306, "root", "1234", "mysql");
let mut setup_conn = setup_pool.acquire().expect("Failed to acquire setup connection");
setup_conn.execute("CREATE DATABASE IF NOT EXISTS test_rust", &[]).unwrap();
let pool = MySqlPool::new("127.0.0.1", 3306, "root", "1234", "test_rust");
let mut conn = pool.acquire().unwrap();
conn.execute(
"CREATE TABLE IF NOT EXISTS test_users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), age INT)",
&[]
).unwrap();
conn.execute("TRUNCATE TABLE test_users", &[]).unwrap();
let res = conn.execute(
"INSERT INTO test_users (name, age) VALUES (?, ?)",
&sql_params!["Bob", 25]
).unwrap();
assert_eq!(res.rows_affected, 1);
let rows = conn.query("SELECT name, age FROM test_users", &[]).unwrap();
assert_eq!(rows.len(), 1);
let name: String = rows[0].get("name");
let age: i32 = rows[0].get("age");
assert_eq!(name, "Bob");
assert_eq!(age, 25);
}
#[test]
fn test_unified_connection_url_and_macro() {
use rustbasic_core::sql::driver::connect;
use rustbasic_core::sql_params;
#[cfg(feature = "sqlite")]
{
let mut conn = connect("sqlite://:memory:").unwrap();
conn.execute("CREATE TABLE test_params (id INTEGER PRIMARY KEY, name TEXT)", &[]).unwrap();
conn.execute("INSERT INTO test_params (name) VALUES (?)", &sql_params!["A"]).unwrap();
let rows = conn.query("SELECT name FROM test_params", &[]).unwrap();
assert_eq!(rows.len(), 1);
let name: String = rows[0].get("name");
assert_eq!(name, "A");
}
}