+34
-10
src/config.rs
+34
-10
src/config.rs
···
24
24
});
25
25
26
26
pub static POSTGRES_URL: LazyLock<String> = LazyLock::new(|| {
27
-
let Ok(user) = env::var("POSTGRES_USER") else {
28
-
panic!("POSTGRES_USER was not set. Cannot connect to database")
29
-
};
30
-
let Ok(password) = env::var("POSTGRES_PASSWORD") else {
31
-
panic!("POSTGRES_PASSWORD was not set. Cannot connect to database")
32
-
};
33
-
let Ok(host) = env::var("POSTGRES_HOST") else {
34
-
panic!("POSTGRES_HOST was not set. Cannot connect to database")
35
-
};
27
+
if let Ok(url) = env::var("DATABASE_URL") {
28
+
return url;
29
+
}
30
+
31
+
let user = env::var("POSTGRES_USER");
32
+
let db = env::var("POSTGRES_DATABASE").or_else(|_| user.clone());
33
+
let password = env::var("POSTGRES_PASSWORD");
34
+
let host = env::var("POSTGRES_HOST");
36
35
37
-
format!("postgres://{}:{}@{}/{}", user, password, host, user)
36
+
if let Ok(user) = user.clone()
37
+
&& let Ok(db) = db.clone()
38
+
&& let Ok(password) = password.clone()
39
+
&& let Ok(host) = host.clone()
40
+
{
41
+
format!("postgres://{}:{}@{}/{}", user, password, host, db)
42
+
} else {
43
+
let missing = [
44
+
(user, "USER"),
45
+
(db, "DATABASE"),
46
+
(password, "PASSWORD"),
47
+
(host, "HOST"),
48
+
]
49
+
.iter()
50
+
.filter_map(|x| {
51
+
if x.0.is_err() {
52
+
Some(String::from("POSTGRES_") + x.1)
53
+
} else {
54
+
None
55
+
}
56
+
})
57
+
.collect::<Vec<String>>()
58
+
.join(", ");
59
+
60
+
panic!("Could not generate database url. Missing environment variables {}. Set DATABASE_URL to define the postgres url manually", missing);
61
+
}
38
62
});
+1
-2
src/db.rs
+1
-2
src/db.rs
+6
-8
src/main.rs
+6
-8
src/main.rs
···
17
17
let conn: Pool<Postgres> = db::conn().await;
18
18
println!("Database connected and initialized");
19
19
20
-
let pds = match utils::resolver::resolve(&config::USER).await {
21
-
Ok(val) => val,
22
-
Err(err) => panic!("{}", err),
23
-
};
20
+
let pds = utils::resolver::resolve(&config::USER)
21
+
.await
22
+
.unwrap_or_else(|err| panic!("{}", err));
24
23
25
24
println!("Starting backfill");
26
25
let timer = std::time::Instant::now();
27
26
28
-
if let Err(err) = backfill(&pds, &conn, Some(timer)).await {
29
-
println!("{}", err);
30
-
return Err(Error);
31
-
};
27
+
backfill(&pds, &conn, Some(timer))
28
+
.await
29
+
.unwrap_or_else(|err| panic!("{}", err));
32
30
33
31
println!("Backfill complete. Took {:?}", timer.elapsed());
34
32