Add min wait support to close on passing (#555)

Signed-off-by: Daniel Castaño Sánchez <danielcastanosanchez@icloud.com>
This commit is contained in:
Daniel Castaño Sánchez 2024-11-21 08:56:13 +01:00 committed by GitHub
parent 3543eec09d
commit 577c3d50a7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 25 additions and 0 deletions

View File

@ -136,6 +136,23 @@ profiles:
#
close_on_passing: false
# Close on passing minimum wait
# 
# When the close on passing feature is activated, voting will conclude once
# the pass threshold is met. However, there may be instances where it is
# preferable to implement a minimum wait time, even if the vote would
# already pass. This allows participants sufficient opportunity to engage
# and reflect before the vote is automatically finalized.
#
# Units supported:
#
# - day / days
# - week / weeks 
#
# close_on_passing_min_wait: "1 week"
#
close_on_passing_min_wait: null
# Announcements
#
# GitVote can announce the results of a vote when it is closed on GitHub

View File

@ -84,6 +84,8 @@ pub(crate) struct CfgProfile {
pub periodic_status_check: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub close_on_passing: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub close_on_passing_min_wait: Option<String>,
}
impl CfgProfile {

View File

@ -190,6 +190,12 @@ impl DB for PgDB {
where closed = false
and cfg ? 'close_on_passing'
and (cfg->>'close_on_passing')::boolean = true
and
case
when cfg ? 'close_on_passing_min_wait' and string_to_interval(cfg->>'close_on_passing_min_wait') is not null then
current_timestamp > created_at + (cfg->>'close_on_passing_min_wait')::interval
else true
end
",
&[],
)