use sqlx::migrate::Migrator;
use sqlx::{PgPool, Pool};
use std::future::Future;
use std::path::Path;
use testcontainers::images::postgres::Postgres;
use testcontainers::{clients, Docker};
pub async fn test_pg<'a, F, Fut>(test: F)
where
F: FnOnce(Pool<sqlx::Postgres>) -> Fut,
Fut: Future<Output = ()>,
{
let docker = clients::Cli::default();
let container = docker.run(Postgres::default().with_version(13));
let host_port = container.get_host_port(5432).unwrap();
let url = format!("postgres://postgres@localhost:{}/", host_port);
println!("url is {}", url);
let pool = PgPool::connect(&url).await.unwrap();
Migrator::new(Path::new("../dialtone_sqlx/migrations"))
.await.unwrap()
.run(&pool)
.await
.unwrap();
test(pool).await;
}