use sqltool::databases::{create_connection, DatabaseType};
use sqltool::core::{DataTransfer, StructureMigration};
#[tokio::test]
async fn test_sqlite_connection() {
let conn = create_connection(DatabaseType::SQLite, "sqlite::memory:").await;
assert!(conn.is_ok(), "SQLite connection failed");
println!("SQLite connection successful");
}
#[tokio::test]
async fn test_mysql_connection() {
let conn = create_connection(DatabaseType::MySQL, "mysql://root:root@localhost:3306/test").await;
match conn {
Ok(_) => println!("MySQL connection successful"),
Err(e) => println!("MySQL connection failed: {:?}", e),
}
}
#[tokio::test]
async fn test_postgres_connection() {
let conn = create_connection(DatabaseType::PostgreSQL, "postgres://root@localhost:5432/test").await;
match conn {
Ok(_) => println!("PostgreSQL connection successful"),
Err(e) => println!("PostgreSQL connection failed: {:?}", e),
}
}
#[tokio::test]
async fn test_sqlite_to_sqlite_transfer() {
let source_conn = create_connection(DatabaseType::SQLite, "sqlite::memory:").await.unwrap();
let target_conn = create_connection(DatabaseType::SQLite, "sqlite::memory:").await.unwrap();
source_conn.execute("CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, value INTEGER)").await.unwrap();
source_conn.execute("INSERT INTO test (name, value) VALUES ('test1', 100), ('test2', 200)").await.unwrap();
let create_sql = "CREATE TABLE test_target (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, value INTEGER)";
let result = source_conn.execute(create_sql).await;
assert!(result.is_ok(), "Structure creation failed: {:?}", result);
println!("Structure creation successful");
let source_conn = create_connection(DatabaseType::SQLite, "sqlite::memory:").await.unwrap();
let target_conn = create_connection(DatabaseType::SQLite, "sqlite::memory:").await.unwrap();
source_conn.execute("CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, value INTEGER)").await.unwrap();
source_conn.execute("INSERT INTO test (name, value) VALUES ('test1', 100), ('test2', 200)").await.unwrap();
target_conn.execute("CREATE TABLE IF NOT EXISTS test_target (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, value INTEGER)").await.unwrap();
let transfer = DataTransfer::new(source_conn, target_conn);
let mappings = transfer.auto_match_fields("test", "test_target").await;
assert!(mappings.is_ok(), "Auto match fields failed: {:?}", mappings);
let mappings = mappings.unwrap();
println!("Auto match fields successful, mappings: {:?}", mappings);
let result = transfer.transfer(mappings).await;
assert!(result.is_ok(), "Data transfer failed: {:?}", result);
println!("Data transfer successful");
}