postgres.rs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. use deadpool_postgres::{Config, Pool};
  2. use tokio_postgres::NoTls;
  3. use tokio_postgres_migration::Migration;
  4. const SCRIPTS_UP: [(&str, &str); 1] = [(
  5. "0001_create-users",
  6. include_str!("../migrations/0001_create-users_up.sql"),
  7. )];
  8. fn create_config() -> Config {
  9. let mut cfg = Config::new();
  10. if let Ok(host) = std::env::var("PG_HOST") {
  11. cfg.host = Some(host);
  12. }
  13. if let Ok(dbname) = std::env::var("PG_DBNAME") {
  14. cfg.dbname = Some(dbname);
  15. }
  16. if let Ok(user) = std::env::var("PG_USER") {
  17. cfg.user = Some(user);
  18. }
  19. if let Ok(password) = std::env::var("PG_PASSWORD") {
  20. cfg.password = Some(password);
  21. }
  22. cfg
  23. }
  24. pub fn create_pool() -> Pool {
  25. create_config()
  26. .create_pool(NoTls)
  27. .expect("couldn't create postgres pool")
  28. }
  29. pub async fn migrate_up(pool: &Pool) {
  30. let mut client = pool.get().await.expect("couldn't get postgres client");
  31. let migration = Migration::new("migrations".to_string());
  32. migration
  33. .up(&mut **client, &SCRIPTS_UP)
  34. .await
  35. .expect("couldn't run migrations");
  36. }