Fix report create route

This commit is contained in:
Jai A
2021-03-10 20:20:37 -07:00
parent fd80e98207
commit a13bae2f39
2 changed files with 11 additions and 1 deletions

View File

@@ -20,6 +20,7 @@ pub struct Report {
}
#[derive(Serialize, Deserialize, Clone)]
#[serde(rename_all = "kebab-case")]
pub enum ItemType {
Mod,
Version,

View File

@@ -3,6 +3,7 @@ use crate::models::ids::{ModId, UserId, VersionId};
use crate::models::reports::{ItemType, Report};
use crate::routes::ApiError;
use actix_web::{delete, get, post, web, HttpRequest, HttpResponse};
use futures::StreamExt;
use serde::Deserialize;
use sqlx::PgPool;
@@ -18,7 +19,7 @@ pub struct CreateReport {
pub async fn report_create(
req: HttpRequest,
pool: web::Data<PgPool>,
new_report: web::Json<CreateReport>,
mut body: web::Payload,
) -> Result<HttpResponse, ApiError> {
let mut transaction = pool
.begin()
@@ -27,6 +28,14 @@ pub async fn report_create(
let current_user = get_user_from_headers(req.headers(), &mut *transaction).await?;
let mut bytes = web::BytesMut::new();
while let Some(item) = body.next().await {
bytes.extend_from_slice(&item.map_err(|_| {
ApiError::InvalidInputError("Error while parsing request payload!".to_string())
})?);
}
let new_report: CreateReport = serde_json::from_slice(bytes.as_ref())?;
let id = crate::database::models::generate_report_id(&mut transaction).await?;
let report_type = crate::database::models::categories::ReportType::get_id(
&*new_report.report_type,