Improve api schema
This commit is contained in:
parent
f23bb48fa1
commit
f9ad8f9399
9 changed files with 123 additions and 164 deletions
|
@ -1,6 +1,7 @@
|
|||
use actix_web::{error, Error, HttpRequest, HttpResponse};
|
||||
use actix_web::{error, Error, HttpRequest, HttpResponse, HttpResponseBuilder};
|
||||
use serde::ser::SerializeStruct;
|
||||
use serde::{Serialize, Serializer};
|
||||
use serde_json::json;
|
||||
|
||||
pub mod v1;
|
||||
|
||||
|
@ -35,3 +36,12 @@ pub fn json_error_handler(err: error::JsonPayloadError, _: &HttpRequest) -> Erro
|
|||
)
|
||||
.into()
|
||||
}
|
||||
|
||||
pub trait EmgauwaMessage {
|
||||
fn emgauwa_message(self, message: &str) -> HttpResponse;
|
||||
}
|
||||
impl EmgauwaMessage for HttpResponseBuilder {
|
||||
fn emgauwa_message(mut self, message: &str) -> HttpResponse {
|
||||
self.json(json!({ "message": message }))
|
||||
}
|
||||
}
|
|
@ -8,6 +8,7 @@ use sqlx::{Pool, Sqlite};
|
|||
|
||||
use crate::app_state;
|
||||
use crate::app_state::AppState;
|
||||
use crate::handlers::EmgauwaMessage;
|
||||
|
||||
#[get("/controllers")]
|
||||
pub async fn index(pool: web::Data<Pool<Sqlite>>) -> Result<HttpResponse, EmgauwaError> {
|
||||
|
@ -88,5 +89,5 @@ pub async fn delete(
|
|||
.await??;
|
||||
|
||||
DbController::delete_by_uid(&mut pool_conn, uid).await?;
|
||||
Ok(HttpResponse::Ok().json("controller got deleted"))
|
||||
Ok(HttpResponse::Ok().emgauwa_message("controller got deleted"))
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ use emgauwa_common::types::{
|
|||
|
||||
use crate::app_state;
|
||||
use crate::app_state::AppState;
|
||||
use crate::handlers::EmgauwaMessage;
|
||||
|
||||
#[get("/macros")]
|
||||
pub async fn index(pool: web::Data<Pool<Sqlite>>) -> Result<HttpResponse, EmgauwaError> {
|
||||
|
@ -98,7 +99,7 @@ pub async fn delete(
|
|||
let uid = EmgauwaUid::try_from(macro_uid.as_str())?;
|
||||
|
||||
DbMacro::delete_by_uid(&mut pool_conn, uid).await?;
|
||||
Ok(HttpResponse::Ok().json("macro got deleted"))
|
||||
Ok(HttpResponse::Ok().emgauwa_message("macro got deleted"))
|
||||
}
|
||||
|
||||
#[put("/macros/{macro_id}/execute")]
|
||||
|
@ -160,5 +161,5 @@ pub async fn execute(
|
|||
.await??;
|
||||
}
|
||||
|
||||
Ok(HttpResponse::Ok().finish()) // TODO add a message?
|
||||
Ok(HttpResponse::Ok().emgauwa_message("macro got executed"))
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ use sqlx::{Pool, Sqlite};
|
|||
|
||||
use crate::app_state;
|
||||
use crate::app_state::AppState;
|
||||
use crate::handlers::EmgauwaMessage;
|
||||
|
||||
#[get("/relays")]
|
||||
pub async fn index(pool: web::Data<Pool<Sqlite>>) -> Result<HttpResponse, EmgauwaError> {
|
||||
|
@ -181,5 +182,5 @@ pub async fn pulse(
|
|||
})
|
||||
.await??;
|
||||
|
||||
Ok(HttpResponse::Ok().finish()) // TODO add a message?
|
||||
Ok(HttpResponse::Ok().emgauwa_message("pulse sent"))
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ use sqlx::{Pool, Sqlite};
|
|||
|
||||
use crate::app_state;
|
||||
use crate::app_state::AppState;
|
||||
use crate::handlers::EmgauwaMessage;
|
||||
|
||||
#[get("/schedules")]
|
||||
pub async fn index(pool: web::Data<Pool<Sqlite>>) -> Result<HttpResponse, EmgauwaError> {
|
||||
|
@ -190,7 +191,7 @@ pub async fn delete(
|
|||
ScheduleUid::On => Err(EmgauwaError::from(ApiError::ProtectedSchedule)),
|
||||
ScheduleUid::Any(_) => {
|
||||
DbSchedule::delete_by_uid(&mut pool_conn, uid).await?;
|
||||
Ok(HttpResponse::Ok().json("schedule got deleted"))
|
||||
Ok(HttpResponse::Ok().emgauwa_message("schedule got deleted"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ use emgauwa_common::errors::{DatabaseError, EmgauwaError};
|
|||
use emgauwa_common::models::{FromDbModel, Tag};
|
||||
use emgauwa_common::types::RequestTagCreate;
|
||||
use sqlx::{Pool, Sqlite};
|
||||
use crate::handlers::EmgauwaMessage;
|
||||
|
||||
#[get("/tags")]
|
||||
pub async fn index(pool: web::Data<Pool<Sqlite>>) -> Result<HttpResponse, EmgauwaError> {
|
||||
|
@ -43,7 +44,7 @@ pub async fn delete(
|
|||
let (tag_name,) = path.into_inner();
|
||||
|
||||
DbTag::delete_by_tag(&mut pool_conn, &tag_name).await?;
|
||||
Ok(HttpResponse::Ok().json("tag got deleted"))
|
||||
Ok(HttpResponse::Ok().emgauwa_message("tag got deleted"))
|
||||
}
|
||||
|
||||
#[post("/tags")]
|
||||
|
|
|
@ -71,11 +71,8 @@ async fn main() -> Result<(), std::io::Error> {
|
|||
}
|
||||
});
|
||||
|
||||
let mut api_v1_json =
|
||||
let api_v1_json =
|
||||
serde_json::from_str(include_str!("../api.v1.json")).unwrap_or(api_default.clone());
|
||||
api_v1_json["servers"] = json!([{
|
||||
"url": "/",
|
||||
}]);
|
||||
|
||||
|
||||
App::new()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue