You've already forked AstralRinth
forked from didirus/AstralRinth
Analytics query (#716)
This commit is contained in:
@@ -38,8 +38,8 @@ pub fn config(cfg: &mut web::ServiceConfig) {
|
|||||||
pub struct GetData {
|
pub struct GetData {
|
||||||
// only one of project_ids or version_ids should be used
|
// 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
|
// if neither are provided, all projects the user has access to will be used
|
||||||
pub project_ids: Option<Vec<String>>,
|
pub project_ids: Option<String>,
|
||||||
pub version_ids: Option<Vec<String>>,
|
pub version_ids: Option<String>,
|
||||||
|
|
||||||
pub start_date: Option<NaiveDate>, // defaults to 2 weeks ago
|
pub start_date: Option<NaiveDate>, // defaults to 2 weeks ago
|
||||||
pub end_date: Option<NaiveDate>, // defaults to now
|
pub end_date: Option<NaiveDate>, // defaults to now
|
||||||
@@ -68,7 +68,7 @@ pub struct FetchedPlaytime {
|
|||||||
pub async fn playtimes_get(
|
pub async fn playtimes_get(
|
||||||
req: HttpRequest,
|
req: HttpRequest,
|
||||||
clickhouse: web::Data<clickhouse::Client>,
|
clickhouse: web::Data<clickhouse::Client>,
|
||||||
data: web::Json<GetData>,
|
data: web::Query<GetData>,
|
||||||
session_queue: web::Data<AuthQueue>,
|
session_queue: web::Data<AuthQueue>,
|
||||||
pool: web::Data<PgPool>,
|
pool: web::Data<PgPool>,
|
||||||
redis: web::Data<deadpool_redis::Pool>,
|
redis: web::Data<deadpool_redis::Pool>,
|
||||||
@@ -84,8 +84,16 @@ pub async fn playtimes_get(
|
|||||||
.map(|x| x.1)
|
.map(|x| x.1)
|
||||||
.ok();
|
.ok();
|
||||||
|
|
||||||
let project_ids = data.project_ids.clone();
|
let project_ids = data
|
||||||
let version_ids = data.version_ids.clone();
|
.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() {
|
if project_ids.is_some() && version_ids.is_some() {
|
||||||
return Err(ApiError::InvalidInput(
|
return Err(ApiError::InvalidInput(
|
||||||
@@ -143,7 +151,7 @@ pub async fn playtimes_get(
|
|||||||
pub async fn views_get(
|
pub async fn views_get(
|
||||||
req: HttpRequest,
|
req: HttpRequest,
|
||||||
clickhouse: web::Data<clickhouse::Client>,
|
clickhouse: web::Data<clickhouse::Client>,
|
||||||
data: web::Json<GetData>,
|
data: web::Query<GetData>,
|
||||||
session_queue: web::Data<AuthQueue>,
|
session_queue: web::Data<AuthQueue>,
|
||||||
pool: web::Data<PgPool>,
|
pool: web::Data<PgPool>,
|
||||||
redis: web::Data<deadpool_redis::Pool>,
|
redis: web::Data<deadpool_redis::Pool>,
|
||||||
@@ -159,8 +167,16 @@ pub async fn views_get(
|
|||||||
.map(|x| x.1)
|
.map(|x| x.1)
|
||||||
.ok();
|
.ok();
|
||||||
|
|
||||||
let project_ids = data.project_ids.clone();
|
let project_ids = data
|
||||||
let version_ids = data.version_ids.clone();
|
.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() {
|
if project_ids.is_some() && version_ids.is_some() {
|
||||||
return Err(ApiError::InvalidInput(
|
return Err(ApiError::InvalidInput(
|
||||||
@@ -218,7 +234,7 @@ pub async fn views_get(
|
|||||||
pub async fn downloads_get(
|
pub async fn downloads_get(
|
||||||
req: HttpRequest,
|
req: HttpRequest,
|
||||||
clickhouse: web::Data<clickhouse::Client>,
|
clickhouse: web::Data<clickhouse::Client>,
|
||||||
data: web::Json<GetData>,
|
data: web::Query<GetData>,
|
||||||
session_queue: web::Data<AuthQueue>,
|
session_queue: web::Data<AuthQueue>,
|
||||||
pool: web::Data<PgPool>,
|
pool: web::Data<PgPool>,
|
||||||
redis: web::Data<deadpool_redis::Pool>,
|
redis: web::Data<deadpool_redis::Pool>,
|
||||||
@@ -234,8 +250,16 @@ pub async fn downloads_get(
|
|||||||
.map(|x| x.1)
|
.map(|x| x.1)
|
||||||
.ok();
|
.ok();
|
||||||
|
|
||||||
let project_ids = data.project_ids.clone();
|
let project_ids = data
|
||||||
let version_ids = data.version_ids.clone();
|
.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() {
|
if project_ids.is_some() && version_ids.is_some() {
|
||||||
return Err(ApiError::InvalidInput(
|
return Err(ApiError::InvalidInput(
|
||||||
@@ -296,7 +320,7 @@ pub async fn downloads_get(
|
|||||||
pub async fn countries_downloads_get(
|
pub async fn countries_downloads_get(
|
||||||
req: HttpRequest,
|
req: HttpRequest,
|
||||||
clickhouse: web::Data<clickhouse::Client>,
|
clickhouse: web::Data<clickhouse::Client>,
|
||||||
data: web::Json<GetData>,
|
data: web::Query<GetData>,
|
||||||
session_queue: web::Data<AuthQueue>,
|
session_queue: web::Data<AuthQueue>,
|
||||||
pool: web::Data<PgPool>,
|
pool: web::Data<PgPool>,
|
||||||
redis: web::Data<deadpool_redis::Pool>,
|
redis: web::Data<deadpool_redis::Pool>,
|
||||||
@@ -312,8 +336,16 @@ pub async fn countries_downloads_get(
|
|||||||
.map(|x| x.1)
|
.map(|x| x.1)
|
||||||
.ok();
|
.ok();
|
||||||
|
|
||||||
let project_ids = data.project_ids.clone();
|
let project_ids = data
|
||||||
let version_ids = data.version_ids.clone();
|
.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() {
|
if project_ids.is_some() && version_ids.is_some() {
|
||||||
return Err(ApiError::InvalidInput(
|
return Err(ApiError::InvalidInput(
|
||||||
@@ -372,7 +404,7 @@ pub async fn countries_downloads_get(
|
|||||||
pub async fn countries_views_get(
|
pub async fn countries_views_get(
|
||||||
req: HttpRequest,
|
req: HttpRequest,
|
||||||
clickhouse: web::Data<clickhouse::Client>,
|
clickhouse: web::Data<clickhouse::Client>,
|
||||||
data: web::Json<GetData>,
|
data: web::Query<GetData>,
|
||||||
session_queue: web::Data<AuthQueue>,
|
session_queue: web::Data<AuthQueue>,
|
||||||
pool: web::Data<PgPool>,
|
pool: web::Data<PgPool>,
|
||||||
redis: web::Data<deadpool_redis::Pool>,
|
redis: web::Data<deadpool_redis::Pool>,
|
||||||
@@ -388,8 +420,16 @@ pub async fn countries_views_get(
|
|||||||
.map(|x| x.1)
|
.map(|x| x.1)
|
||||||
.ok();
|
.ok();
|
||||||
|
|
||||||
let project_ids = data.project_ids.clone();
|
let project_ids = data
|
||||||
let version_ids = data.version_ids.clone();
|
.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() {
|
if project_ids.is_some() && version_ids.is_some() {
|
||||||
return Err(ApiError::InvalidInput(
|
return Err(ApiError::InvalidInput(
|
||||||
|
|||||||
Reference in New Issue
Block a user