tangled
alpha
login
or
join now
vielle.dev
/
meview
0
fork
atom
this repo has no description
0
fork
atom
overview
issues
pulls
pipelines
support DATABASE_URL environment variable
vielle.dev
2 months ago
8b449d6f
edc38383
verified
This commit was signed with the committer's
known signature
.
vielle.dev
SSH Key Fingerprint:
SHA256:/4bvxqoEh9iMdjAPgcgAgXKZZQTROL3ULiPt6nH9RSs=
+41
-20
3 changed files
expand all
collapse all
unified
split
src
config.rs
db.rs
main.rs
+34
-10
src/config.rs
···
24
24
});
25
25
26
26
pub static POSTGRES_URL: LazyLock<String> = LazyLock::new(|| {
27
27
-
let Ok(user) = env::var("POSTGRES_USER") else {
28
28
-
panic!("POSTGRES_USER was not set. Cannot connect to database")
29
29
-
};
30
30
-
let Ok(password) = env::var("POSTGRES_PASSWORD") else {
31
31
-
panic!("POSTGRES_PASSWORD was not set. Cannot connect to database")
32
32
-
};
33
33
-
let Ok(host) = env::var("POSTGRES_HOST") else {
34
34
-
panic!("POSTGRES_HOST was not set. Cannot connect to database")
35
35
-
};
27
27
+
if let Ok(url) = env::var("DATABASE_URL") {
28
28
+
return url;
29
29
+
}
30
30
+
31
31
+
let user = env::var("POSTGRES_USER");
32
32
+
let db = env::var("POSTGRES_DATABASE").or_else(|_| user.clone());
33
33
+
let password = env::var("POSTGRES_PASSWORD");
34
34
+
let host = env::var("POSTGRES_HOST");
36
35
37
37
-
format!("postgres://{}:{}@{}/{}", user, password, host, user)
36
36
+
if let Ok(user) = user.clone()
37
37
+
&& let Ok(db) = db.clone()
38
38
+
&& let Ok(password) = password.clone()
39
39
+
&& let Ok(host) = host.clone()
40
40
+
{
41
41
+
format!("postgres://{}:{}@{}/{}", user, password, host, db)
42
42
+
} else {
43
43
+
let missing = [
44
44
+
(user, "USER"),
45
45
+
(db, "DATABASE"),
46
46
+
(password, "PASSWORD"),
47
47
+
(host, "HOST"),
48
48
+
]
49
49
+
.iter()
50
50
+
.filter_map(|x| {
51
51
+
if x.0.is_err() {
52
52
+
Some(String::from("POSTGRES_") + x.1)
53
53
+
} else {
54
54
+
None
55
55
+
}
56
56
+
})
57
57
+
.collect::<Vec<String>>()
58
58
+
.join(", ");
59
59
+
60
60
+
panic!("Could not generate database url. Missing environment variables {}. Set DATABASE_URL to define the postgres url manually", missing);
61
61
+
}
38
62
});
+1
-2
src/db.rs
···
7
7
let conn = match PgPool::connect(&config::POSTGRES_URL).await {
8
8
Ok(val) => val,
9
9
Err(err) => {
10
10
-
println!("Could not connect to the database. Got error {err}");
11
11
-
panic!()
10
10
+
panic!("Could not connect to the database. Got error {err}");
12
11
}
13
12
};
14
13
+6
-8
src/main.rs
···
17
17
let conn: Pool<Postgres> = db::conn().await;
18
18
println!("Database connected and initialized");
19
19
20
20
-
let pds = match utils::resolver::resolve(&config::USER).await {
21
21
-
Ok(val) => val,
22
22
-
Err(err) => panic!("{}", err),
23
23
-
};
20
20
+
let pds = utils::resolver::resolve(&config::USER)
21
21
+
.await
22
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
28
-
if let Err(err) = backfill(&pds, &conn, Some(timer)).await {
29
29
-
println!("{}", err);
30
30
-
return Err(Error);
31
31
-
};
27
27
+
backfill(&pds, &conn, Some(timer))
28
28
+
.await
29
29
+
.unwrap_or_else(|err| panic!("{}", err));
32
30
33
31
println!("Backfill complete. Took {:?}", timer.elapsed());
34
32