Skip to content

Commit 7dbc4bc

Browse files
authored
config/server: Convert ownership_invitations_expiration_days to chrono::Duration (#10543)
What's the point of a proper type system if we don't use it... :D
1 parent af35097 commit 7dbc4bc

File tree

5 files changed

+9
-10
lines changed

5 files changed

+9
-10
lines changed

src/config/server.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ pub struct Server {
5757
pub domain_name: String,
5858
pub allowed_origins: AllowedOrigins,
5959
pub downloads_persist_interval: Duration,
60-
pub ownership_invitations_expiration_days: u64,
60+
pub ownership_invitations_expiration: chrono::Duration,
6161
pub metrics_authorization_token: Option<String>,
6262
pub instance_metrics_log_every_seconds: Option<u64>,
6363
pub blocked_routes: HashSet<String>,
@@ -211,7 +211,7 @@ impl Server {
211211
downloads_persist_interval: var_parsed("DOWNLOADS_PERSIST_INTERVAL_MS")?
212212
.map(Duration::from_millis)
213213
.unwrap_or(Duration::from_secs(60)),
214-
ownership_invitations_expiration_days: 30,
214+
ownership_invitations_expiration: chrono::Duration::days(30),
215215
metrics_authorization_token: var("METRICS_AUTHORIZATION_TOKEN")?,
216216
instance_metrics_log_every_seconds: var_parsed("INSTANCE_METRICS_LOG_EVERY_SECONDS")?,
217217
blocked_routes: HashSet::from_iter(list("BLOCKED_ROUTES")?),

src/controllers/crate_owner_invitation.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use axum::extract::{FromRequestParts, Path, Query};
1414
use axum::Json;
1515
use axum_extra::json;
1616
use axum_extra::response::ErasedJson;
17-
use chrono::{Duration, Utc};
17+
use chrono::Utc;
1818
use diesel::pg::Pg;
1919
use diesel::prelude::*;
2020
use diesel::sql_types::Bool;
@@ -175,7 +175,7 @@ async fn prepare_list(
175175
};
176176

177177
// Load all the non-expired invitations matching the filter.
178-
let expire_cutoff = Duration::days(config.ownership_invitations_expiration_days as i64);
178+
let expire_cutoff = config.ownership_invitations_expiration;
179179
let query = crate_owner_invitations::table
180180
.filter(sql_filter)
181181
.filter(crate_owner_invitations::created_at.gt((Utc::now() - expire_cutoff).naive_utc()))

src/models/crate_owner_invitation.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,6 @@ impl CrateOwnerInvitation {
172172
}
173173

174174
pub fn expires_at(&self, config: &config::Server) -> NaiveDateTime {
175-
let days = chrono::Duration::days(config.ownership_invitations_expiration_days as i64);
176-
self.created_at + days
175+
self.created_at + config.ownership_invitations_expiration
177176
}
178177
}

src/tests/owners.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use crate::views::{
99
};
1010

1111
use crate::schema::users;
12-
use chrono::{Duration, Utc};
12+
use chrono::Utc;
1313
use diesel::prelude::*;
1414
use diesel_async::RunQueryDsl;
1515
use http::StatusCode;
@@ -625,8 +625,8 @@ pub async fn expire_invitation(app: &TestApp, crate_id: i32) {
625625

626626
let mut conn = app.db_conn().await;
627627

628-
let expiration = app.as_inner().config.ownership_invitations_expiration_days as i64;
629-
let created_at = (Utc::now() - Duration::days(expiration)).naive_utc();
628+
let expiration = app.as_inner().config.ownership_invitations_expiration;
629+
let created_at = (Utc::now() - expiration).naive_utc();
630630

631631
diesel::update(crate_owner_invitations::table)
632632
.set(crate_owner_invitations::created_at.eq(created_at))

src/tests/util/test_app.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -466,7 +466,7 @@ fn simple_config() -> config::Server {
466466
domain_name: "crates.io".into(),
467467
allowed_origins: Default::default(),
468468
downloads_persist_interval: Duration::from_secs(1),
469-
ownership_invitations_expiration_days: 30,
469+
ownership_invitations_expiration: chrono::Duration::days(30),
470470
metrics_authorization_token: None,
471471
instance_metrics_log_every_seconds: None,
472472
blocked_routes: HashSet::new(),

0 commit comments

Comments
 (0)