Analytics query (#716)

This commit is contained in:
Wyatt Verchere
2023-09-24 08:22:35 -07:00
committed by GitHub
parent 5cab618bf7
commit 531b8214c0

View File

@@ -38,8 +38,8 @@ pub fn config(cfg: &mut web::ServiceConfig) {
pub struct GetData {
// only one of project_ids or version_ids should be used
// if neither are provided, all projects the user has access to will be used
pub project_ids: Option<Vec<String>>,
pub version_ids: Option<Vec<String>>,
pub project_ids: Option<String>,
pub version_ids: Option<String>,
pub start_date: Option<NaiveDate>, // defaults to 2 weeks ago
pub end_date: Option<NaiveDate>, // defaults to now
@@ -68,7 +68,7 @@ pub struct FetchedPlaytime {
pub async fn playtimes_get(
req: HttpRequest,
clickhouse: web::Data<clickhouse::Client>,
data: web::Json<GetData>,
data: web::Query<GetData>,
session_queue: web::Data<AuthQueue>,
pool: web::Data<PgPool>,
redis: web::Data<deadpool_redis::Pool>,
@@ -84,8 +84,16 @@ pub async fn playtimes_get(
.map(|x| x.1)
.ok();
let project_ids = data.project_ids.clone();
let version_ids = data.version_ids.clone();
let project_ids = data
.project_ids
.as_ref()
.map(|ids| serde_json::from_str::<Vec<String>>(ids))
.transpose()?;
let version_ids = data
.version_ids
.as_ref()
.map(|ids| serde_json::from_str::<Vec<String>>(ids))
.transpose()?;
if project_ids.is_some() && version_ids.is_some() {
return Err(ApiError::InvalidInput(
@@ -143,7 +151,7 @@ pub async fn playtimes_get(
pub async fn views_get(
req: HttpRequest,
clickhouse: web::Data<clickhouse::Client>,
data: web::Json<GetData>,
data: web::Query<GetData>,
session_queue: web::Data<AuthQueue>,
pool: web::Data<PgPool>,
redis: web::Data<deadpool_redis::Pool>,
@@ -159,8 +167,16 @@ pub async fn views_get(
.map(|x| x.1)
.ok();
let project_ids = data.project_ids.clone();
let version_ids = data.version_ids.clone();
let project_ids = data
.project_ids
.as_ref()
.map(|ids| serde_json::from_str::<Vec<String>>(ids))
.transpose()?;
let version_ids = data
.version_ids
.as_ref()
.map(|ids| serde_json::from_str::<Vec<String>>(ids))
.transpose()?;
if project_ids.is_some() && version_ids.is_some() {
return Err(ApiError::InvalidInput(
@@ -218,7 +234,7 @@ pub async fn views_get(
pub async fn downloads_get(
req: HttpRequest,
clickhouse: web::Data<clickhouse::Client>,
data: web::Json<GetData>,
data: web::Query<GetData>,
session_queue: web::Data<AuthQueue>,
pool: web::Data<PgPool>,
redis: web::Data<deadpool_redis::Pool>,
@@ -234,8 +250,16 @@ pub async fn downloads_get(
.map(|x| x.1)
.ok();
let project_ids = data.project_ids.clone();
let version_ids = data.version_ids.clone();
let project_ids = data
.project_ids
.as_ref()
.map(|ids| serde_json::from_str::<Vec<String>>(ids))
.transpose()?;
let version_ids = data
.version_ids
.as_ref()
.map(|ids| serde_json::from_str::<Vec<String>>(ids))
.transpose()?;
if project_ids.is_some() && version_ids.is_some() {
return Err(ApiError::InvalidInput(
@@ -296,7 +320,7 @@ pub async fn downloads_get(
pub async fn countries_downloads_get(
req: HttpRequest,
clickhouse: web::Data<clickhouse::Client>,
data: web::Json<GetData>,
data: web::Query<GetData>,
session_queue: web::Data<AuthQueue>,
pool: web::Data<PgPool>,
redis: web::Data<deadpool_redis::Pool>,
@@ -312,8 +336,16 @@ pub async fn countries_downloads_get(
.map(|x| x.1)
.ok();
let project_ids = data.project_ids.clone();
let version_ids = data.version_ids.clone();
let project_ids = data
.project_ids
.as_ref()
.map(|ids| serde_json::from_str::<Vec<String>>(ids))
.transpose()?;
let version_ids = data
.version_ids
.as_ref()
.map(|ids| serde_json::from_str::<Vec<String>>(ids))
.transpose()?;
if project_ids.is_some() && version_ids.is_some() {
return Err(ApiError::InvalidInput(
@@ -372,7 +404,7 @@ pub async fn countries_downloads_get(
pub async fn countries_views_get(
req: HttpRequest,
clickhouse: web::Data<clickhouse::Client>,
data: web::Json<GetData>,
data: web::Query<GetData>,
session_queue: web::Data<AuthQueue>,
pool: web::Data<PgPool>,
redis: web::Data<deadpool_redis::Pool>,
@@ -388,8 +420,16 @@ pub async fn countries_views_get(
.map(|x| x.1)
.ok();
let project_ids = data.project_ids.clone();
let version_ids = data.version_ids.clone();
let project_ids = data
.project_ids
.as_ref()
.map(|ids| serde_json::from_str::<Vec<String>>(ids))
.transpose()?;
let version_ids = data
.version_ids
.as_ref()
.map(|ids| serde_json::from_str::<Vec<String>>(ids))
.transpose()?;
if project_ids.is_some() && version_ids.is_some() {
return Err(ApiError::InvalidInput(