Adds get for a single gamenight.

This commit is contained in:
2023-03-25 23:32:41 +01:00
parent 5216f55a14
commit 217e5ee64b
5 changed files with 36 additions and 9 deletions

View File

@@ -1,11 +1,11 @@
use actix_web::{get, web, Responder, http::header::ContentType, HttpResponse, post};
use chrono::{DateTime, ParseError};
use crate::{DbPool, request::{error::ApiError, responses::GameNightResponse, requests::Gamenight}, schema::{self, user::User}};
use crate::{DbPool, request::{error::ApiError, responses::GameNightResponse, requests::{GamenightPost, GamenightGet}}, schema::{self, user::User}};
use uuid::Uuid;
impl Gamenight {
impl GamenightPost {
pub fn into_with_user(&self, user: User) -> Result<schema::gamenight::Gamenight, ParseError> {
return Ok(schema::gamenight::Gamenight {
datetime: DateTime::parse_from_rfc3339(&self.datetime)?.with_timezone(&chrono::Utc),
@@ -16,6 +16,12 @@ impl Gamenight {
}
}
impl Into<Uuid> for GamenightGet {
fn into(self) -> Uuid {
Uuid::parse_str(self.id.as_str()).unwrap()
}
}
#[get("/gamenights")]
pub async fn gamenights(pool: web::Data<DbPool>, _user: User) -> Result<impl Responder, ApiError> {
let mut conn = pool.get().expect("couldn't get db connection from pool");
@@ -28,10 +34,21 @@ pub async fn gamenights(pool: web::Data<DbPool>, _user: User) -> Result<impl Res
}
#[post("/gamenight")]
pub async fn gamenight(pool: web::Data<DbPool>, user: User, gamenight_data: web::Json<Gamenight>) -> Result<impl Responder, ApiError> {
pub async fn gamenight_post(pool: web::Data<DbPool>, user: User, gamenight_data: web::Json<GamenightPost>) -> Result<impl Responder, ApiError> {
let mut conn = pool.get().expect("couldn't get db connection from pool");
schema::gamenight::add_gamenight(&mut conn, gamenight_data.into_with_user(user)?)?;
Ok(HttpResponse::Ok())
}
#[get("/gamenight")]
pub async fn gamenight_get(pool: web::Data<DbPool>, _user: User, gamenight_data: web::Json<GamenightGet>) -> Result<impl Responder, ApiError> {
let mut conn = pool.get().expect("couldn't get db connection from pool");
let gamenight = schema::gamenight::get_gamenight(&mut conn, gamenight_data.into_inner().into())?;
Ok(HttpResponse::Ok()
.content_type(ContentType::json())
.body(serde_json::to_string(&gamenight)?))
}

View File

@@ -9,4 +9,5 @@ mod authorization;
pub use user_handlers::login;
pub use user_handlers::register;
pub use gamenight_handlers::gamenights;
pub use gamenight_handlers::gamenight;
pub use gamenight_handlers::gamenight_post;
pub use gamenight_handlers::gamenight_get;

View File

@@ -28,7 +28,12 @@ pub struct Register {
}
#[derive(Serialize, Deserialize, Clone)]
pub struct Gamenight {
pub struct GamenightPost {
pub name: String,
pub datetime: String
}
#[derive(Serialize, Deserialize, Clone)]
pub struct GamenightGet {
pub id: String
}