feat(server): POST request to create distros
parent
b7be311485
commit
50ebffb459
|
@ -7,6 +7,7 @@ use serde::{Deserialize, Serialize};
|
|||
#[sea_orm(table_name = "distro")]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key)]
|
||||
#[serde(skip_deserializing)]
|
||||
pub id: i32,
|
||||
#[sea_orm(unique)]
|
||||
pub slug: String,
|
||||
|
|
|
@ -43,4 +43,10 @@ impl DistroQuery {
|
|||
|
||||
Distro::insert(model).exec(&self.conn).await
|
||||
}
|
||||
|
||||
pub async fn insert_model(&self, model: distro::Model) -> Result<distro::Model> {
|
||||
let mut model: distro::ActiveModel = model.into();
|
||||
model.id = NotSet;
|
||||
model.insert(&self.conn).await
|
||||
}
|
||||
}
|
||||
|
|
|
@ -35,10 +35,12 @@ impl IntoResponse for ServerError {
|
|||
ServerError::IO(_) => StatusCode::INTERNAL_SERVER_ERROR.into_response(),
|
||||
ServerError::Axum(_) => StatusCode::INTERNAL_SERVER_ERROR.into_response(),
|
||||
ServerError::Status(status) => status.into_response(),
|
||||
ServerError::Db(sea_orm::DbErr::RecordNotFound(_)) => {
|
||||
StatusCode::NOT_FOUND.into_response()
|
||||
ServerError::Db(err) => match err {
|
||||
sea_orm::DbErr::RecordNotFound(_) => StatusCode::NOT_FOUND,
|
||||
sea_orm::DbErr::Query(_) => StatusCode::BAD_REQUEST,
|
||||
_ => StatusCode::INTERNAL_SERVER_ERROR,
|
||||
}
|
||||
ServerError::Db(_) => StatusCode::INTERNAL_SERVER_ERROR.into_response(),
|
||||
.into_response(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ use crate::db;
|
|||
|
||||
pub fn router() -> Router<crate::Global> {
|
||||
Router::new()
|
||||
.route("/", get(get_distros))
|
||||
.route("/", get(get_distros).post(post_distro))
|
||||
.route("/:id", get(get_single_distro))
|
||||
}
|
||||
|
||||
|
@ -41,3 +41,10 @@ async fn get_single_distro(
|
|||
|
||||
Ok(Json(repo))
|
||||
}
|
||||
|
||||
async fn post_distro(
|
||||
State(global): State<crate::Global>,
|
||||
Json(model): Json<db::distro::Model>,
|
||||
) -> crate::Result<Json<db::distro::Model>> {
|
||||
Ok(Json(global.db.distro.insert_model(model).await?))
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue