1919use actix_web:: http:: header:: ContentType ;
2020use actix_web:: web:: { self , Json } ;
2121use actix_web:: { FromRequest , HttpRequest , HttpResponse , Responder } ;
22- use bytes:: Bytes ;
2322use chrono:: { DateTime , Utc } ;
2423use datafusion:: common:: tree_node:: TreeNode ;
2524use datafusion:: common:: Column ;
@@ -30,6 +29,7 @@ use datafusion::logical_expr::{Aggregate, LogicalPlan, Projection};
3029use datafusion:: prelude:: Expr ;
3130use futures_util:: Future ;
3231use http:: StatusCode ;
32+ use serde:: { Deserialize , Serialize } ;
3333use serde_json:: { json, Value } ;
3434use std:: collections:: HashMap ;
3535use std:: pin:: Pin ;
@@ -45,7 +45,7 @@ use crate::event::commit_schema;
4545use crate :: metrics:: QUERY_EXECUTE_TIME ;
4646use crate :: option:: { Mode , CONFIG } ;
4747use crate :: query:: error:: ExecuteError ;
48- use crate :: query:: Query as LogicalQuery ;
48+ use crate :: query:: { DateBinRecord , DateBinRequest , Query as LogicalQuery } ;
4949use crate :: query:: { TableScanVisitor , QUERY_SESSION } ;
5050use crate :: rbac:: Users ;
5151use crate :: response:: QueryResponse ;
@@ -58,7 +58,7 @@ use crate::utils::user_auth_for_query;
5858use super :: modal:: utils:: logstream_utils:: create_stream_and_schema_from_storage;
5959
6060/// Query Request through http endpoint.
61- #[ derive( Debug , serde :: Deserialize , serde :: Serialize , Clone ) ]
61+ #[ derive( Debug , Deserialize , Serialize , Clone ) ]
6262#[ serde( rename_all = "camelCase" ) ]
6363pub struct Query {
6464 pub query : String ,
@@ -71,26 +71,8 @@ pub struct Query {
7171 #[ serde( skip) ]
7272 pub filter_tags : Option < Vec < String > > ,
7373}
74-
75- /// DateBin Request.
76- #[ derive( Debug , serde:: Deserialize , serde:: Serialize , Clone ) ]
77- #[ serde( rename_all = "camelCase" ) ]
78- pub struct DateBin {
79- pub stream : String ,
80- pub start_time : String ,
81- pub end_time : String ,
82- pub num_bins : u64 ,
83- }
84-
85- /// DateBinRecord
86- #[ derive( Debug , serde:: Deserialize , serde:: Serialize , Clone ) ]
87- pub struct DateBinRecord {
88- pub date_bin_timestamp : String ,
89- pub log_count : u64 ,
90- }
91-
9274/// DateBin Response.
93- #[ derive( Debug , serde :: Deserialize , serde :: Serialize , Clone ) ]
75+ #[ derive( Debug , Serialize , Clone ) ]
9476pub struct DateBinResponse {
9577 pub fields : Vec < String > ,
9678 pub records : Vec < DateBinRecord > ,
@@ -131,7 +113,7 @@ pub async fn query(req: HttpRequest, query_request: Query) -> Result<HttpRespons
131113 let time = Instant :: now ( ) ;
132114
133115 if let ( true , column_name) = is_logical_plan_aggregate_without_filters ( & raw_logical_plan) {
134- let date_bin_request = DateBin {
116+ let date_bin_request = DateBinRequest {
135117 stream : table_name. clone ( ) ,
136118 start_time : query_request. start_time . clone ( ) ,
137119 end_time : query_request. end_time . clone ( ) ,
0 commit comments