50 lines
1.2 KiB
Rust
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>),
|
|
}
|