use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PaginationParams {
pub limit: Option<u32>,
pub offset: Option<u32>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PaginatedResponse<T> {
pub data: T,
pub metadata: Option<PaginationMetadata>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PaginationMetadata {
pub total_count: Option<u64>,
pub total: Option<u64>,
pub page: Option<u32>,
pub per_page: Option<u32>,
pub limit: Option<u32>,
pub offset: Option<u32>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DateRangeParams {
pub start_time: Option<DateTime<Utc>>,
pub end_time: Option<DateTime<Utc>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct HistoryParams {
pub symbol: Option<String>,
pub start_time: Option<DateTime<Utc>>,
pub end_time: Option<DateTime<Utc>>,
pub limit: Option<u32>,
pub pagination: Option<PaginationParams>,
pub date_range: Option<DateRangeParams>,
pub filters: Option<HashMap<String, String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct HistoryResponse<T> {
pub data: Vec<T>,
pub total: u64,
pub limit: u32,
pub offset: u32,
}