minccino/src/yui/mod.rs
2022-09-23 22:39:17 -07:00

50 lines
1.2 KiB
Rust

use crate::entity::*;
use rocket::serde::{json::Json, Deserialize, Serialize};
pub mod auth;
pub mod routes;
#[cfg(test)]
mod test;
#[derive(Serialize, Deserialize)]
#[serde(crate = "rocket::serde")]
pub struct InstanceReq {
pub name: String,
pub mac_address: String,
pub ssh_keys: Option<Vec<String>>,
pub user_data: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(crate = "rocket::serde")]
pub struct InstanceResponse {
pub error: Option<String>,
pub instances: Option<Vec<instance_info::Model>>,
}
impl InstanceResponse {
pub fn new(inst: Vec<instance_info::Model>) -> Self {
InstanceResponse {
error: None,
instances: Some(inst),
}
}
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(crate = "rocket::serde")]
pub struct ErrorResponse {
pub error: String,
}
#[derive(Debug, Responder)]
pub enum APIError {
#[response(status = 400)]
BadRequest(Json<ErrorResponse>),
#[response(status = 404)]
NotFound(Json<ErrorResponse>),
#[response(status = 409)]
Conflict(Json<ErrorResponse>),
#[response(status = 500)]
InternalServerError(Json<ErrorResponse>),
}