mirror of
https://codeberg.org/demostf/frontend.git
synced 2026-06-03 18:24:12 +02:00
uploader filter
This commit is contained in:
parent
57d034159b
commit
a3ecbb2222
2 changed files with 14 additions and 8 deletions
|
|
@ -330,7 +330,7 @@ impl Render for RelativeDate {
|
||||||
} else if elapsed.whole_days() < 32 {
|
} else if elapsed.whole_days() < 32 {
|
||||||
write!(buffer, "{} days ago", elapsed.whole_days()).unwrap();
|
write!(buffer, "{} days ago", elapsed.whole_days()).unwrap();
|
||||||
} else if elapsed.whole_days() < 365 {
|
} else if elapsed.whole_days() < 365 {
|
||||||
write!(buffer, "{} days ago", elapsed.whole_days() / 30).unwrap();
|
write!(buffer, "{} months ago", elapsed.whole_days() / 30).unwrap();
|
||||||
} else {
|
} else {
|
||||||
write!(buffer, "{} years go", elapsed.whole_days() / 365).unwrap();
|
write!(buffer, "{} years go", elapsed.whole_days() / 365).unwrap();
|
||||||
}
|
}
|
||||||
|
|
@ -378,6 +378,8 @@ pub struct Filter {
|
||||||
players: Vec<i32>,
|
players: Vec<i32>,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
before: Option<i32>,
|
before: Option<i32>,
|
||||||
|
#[serde(default)]
|
||||||
|
uploader: Option<i32>,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn deserialize_array<'de, D, T>(deserializer: D) -> Result<Vec<T>, D::Error>
|
fn deserialize_array<'de, D, T>(deserializer: D) -> Result<Vec<T>, D::Error>
|
||||||
|
|
@ -395,6 +397,7 @@ impl Filter {
|
||||||
&& self.map.is_empty()
|
&& self.map.is_empty()
|
||||||
&& self.before.is_none()
|
&& self.before.is_none()
|
||||||
&& self.players.is_empty()
|
&& self.players.is_empty()
|
||||||
|
&& self.uploader.is_none()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn apply(&self, query: &mut SelectStatement) {
|
fn apply(&self, query: &mut SelectStatement) {
|
||||||
|
|
@ -413,14 +416,16 @@ impl Filter {
|
||||||
if let Some(before) = &self.before {
|
if let Some(before) = &self.before {
|
||||||
query.and_where(Expr::col(Demos::Id).lt(*before));
|
query.and_where(Expr::col(Demos::Id).lt(*before));
|
||||||
}
|
}
|
||||||
|
if let Some(uploader) = &self.uploader {
|
||||||
|
query.and_where(Expr::col(Demos::Uploader).eq(*uploader));
|
||||||
|
}
|
||||||
if !self.players.is_empty() && self.players.len() < 19 {
|
if !self.players.is_empty() && self.players.len() < 19 {
|
||||||
let mut player_iter = self.players.iter();
|
let mut player = self.players.iter();
|
||||||
let mut players = format!("array[{}", player_iter.next().unwrap());
|
let mut players_arr = format!("array[{}", player.next().unwrap());
|
||||||
for player in player_iter {
|
for player in player {
|
||||||
write!(&mut players, ",{}", player).unwrap();
|
write!(&mut players_arr, ",{}", player).unwrap();
|
||||||
}
|
}
|
||||||
players.push_str("]");
|
players_arr.push_str("]");
|
||||||
// query.and_where(Expr::cust(&players).contained(sub_array));
|
|
||||||
|
|
||||||
query
|
query
|
||||||
.inner_join(
|
.inner_join(
|
||||||
|
|
@ -430,7 +435,7 @@ impl Filter {
|
||||||
.and_where(Expr::col(Players::UserId).is_in(self.players.clone()));
|
.and_where(Expr::col(Players::UserId).is_in(self.players.clone()));
|
||||||
query.group_by_col((Demos::Table, Players::Id));
|
query.group_by_col((Demos::Table, Players::Id));
|
||||||
query.and_having(
|
query.and_having(
|
||||||
Expr::cust(&players).contained(
|
Expr::cust(&players_arr).contained(
|
||||||
Func::cust(ArrayAgg).arg(Expr::col((Players::Table, Players::UserId))),
|
Func::cust(ArrayAgg).arg(Expr::col((Players::Table, Players::UserId))),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
& .solid-select-control {
|
& .solid-select-control {
|
||||||
|
line-height: 26px;
|
||||||
outline-color: var(--highlight-primary);
|
outline-color: var(--highlight-primary);
|
||||||
border: var(--text-secondary) 1px solid;
|
border: var(--text-secondary) 1px solid;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue