summaryrefslogtreecommitdiff
path: root/src/api/mod.rs
blob: d07079a6f326b316f8474fa3f17d0f31e93426c1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
use actix_web::{web, HttpResponse, Scope};
use serde::{Deserialize, Serialize};

pub mod album;
pub mod artist;
pub mod search_results;
pub mod song;

pub fn api_scope() -> Scope {
    web::scope("/api")
        .service(song::get_song)
        .service(song::post_song)
        .service(song::put_song)
        .service(song::delete_song)
        .service(album::get_album)
        .service(album::post_album)
        .service(album::put_album)
        .service(album::delete_album)
        .service(artist::get_artist)
        .service(artist::post_artist)
        .service(artist::put_artist)
        .service(artist::delete_artist)
        .service(search_results::search_results)
}

#[derive(Serialize, Deserialize)]
pub struct Response {
    message: String,
}

pub fn get_response_from_query(
    query: Result<sqlx::mysql::MySqlQueryResult, sqlx::Error>,
    method: String,
) -> HttpResponse {
    match query {
        Ok(_) => HttpResponse::Ok().json(Response {
            message: format!("{} request executed with no errors", method).to_owned(),
        }),
        Err(e) => HttpResponse::BadRequest().json(Response {
            message: format!("There was an issue in the request: {}", e).to_owned(),
        }),
    }
}