Skip to content

Commit 45112cb

Browse files
committed
support from/to fields in ticket searching
1 parent d775670 commit 45112cb

File tree

2 files changed

+23
-7
lines changed

2 files changed

+23
-7
lines changed

src/main.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ struct Config {
6767
logging: Option<LoggingConfig>,
6868
}
6969

70-
7170
#[derive(Database)]
7271
#[database("cmdb")]
7372
pub struct Cmdb(MySqlPool);

src/ticket.rs

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use chrono::Utc;
2+
use rocket::futures::Stream;
23
use rocket::{futures::TryStreamExt, serde::json::Json};
34
use rocket_db_pools::Connection;
45
use serde::Serialize;
@@ -33,22 +34,38 @@ pub async fn get_tickets_by_round_id(mut db: Connection<Cmdb>, round_id: i64) ->
3334
}
3435
}
3536

36-
#[get("/User/<ckey>?<page>")]
37+
#[get("/User/<ckey>?<page>&<from>&<to>")]
3738
pub async fn get_tickets_by_user(
3839
mut db: Connection<Cmdb>,
3940
ckey: &str,
4041
page: Option<i64>,
42+
from: Option<String>,
43+
to: Option<String>,
4144
) -> Json<Vec<Ticket>> {
4245
let mut ridsticks: Vec<(i32, i32)> = Vec::new();
4346

4447
let offset = (page.unwrap_or(1) - 1) * 15;
4548

4649
{
47-
let mut rows = query("SELECT DISTINCT round_id, ticket FROM ticket WHERE (sender = ? OR recipient = ?) ORDER BY round_id DESC LIMIT 15 OFFSET ?")
48-
.bind(ckey)
49-
.bind(ckey)
50-
.bind(offset)
51-
.fetch(&mut **db);
50+
let mut rows: std::pin::Pin<
51+
Box<dyn Stream<Item = Result<sqlx::mysql::MySqlRow, sqlx::Error>> + Send>,
52+
>;
53+
54+
if from.is_some() && to.is_some() {
55+
rows = query("SELECT DISTINCT round_id, ticket FROM ticket WHERE (sender = ? OR recipient = ?) AND (time >= ? AND time <= ?) ORDER BY round_id DESC LIMIT 15 OFFSET ?")
56+
.bind(&ckey)
57+
.bind(&ckey)
58+
.bind(from.unwrap())
59+
.bind(to.unwrap())
60+
.bind(offset)
61+
.fetch(&mut **db)
62+
} else {
63+
rows = query("SELECT DISTINCT round_id, ticket FROM ticket WHERE (sender = ? OR recipient = ?) ORDER BY round_id DESC LIMIT 15 OFFSET ?")
64+
.bind(ckey)
65+
.bind(ckey)
66+
.bind(offset)
67+
.fetch(&mut **db);
68+
}
5269

5370
let mut row_result = rows.try_next().await;
5471
while row_result.is_ok() {

0 commit comments

Comments
 (0)