mod keyed;
use super::paths;
use crate::generators::rust::model::Model;
pub(super) use keyed::{find, remove, update};
pub(super) fn list(model: &Model) -> String {
format!(
"{}\
pub async fn list() -> impl Responder {{\n\
\x20 match {name}::all().await {{\n\
\x20 Ok(rows) => HttpResponse::Ok().json(rows),\n\
\x20 Err(error) => super::super::api::server_error(error),\n\
\x20 }}\n\
}}\n\n",
paths::list(model),
name = model.name
)
}
pub(super) fn create(model: &Model) -> String {
if model.insertable().is_empty() {
return format!(
"{}\
pub async fn create() -> impl Responder {{\n\
\x20 match {name}::create().await {{\n\
\x20 Ok(row) => HttpResponse::Created().json(row),\n\
\x20 Err(error) => super::super::api::server_error(error),\n\
\x20 }}\n\
}}\n\n",
paths::create_empty(model),
name = model.name
);
}
format!(
"{}\
pub async fn create(row: web::Json<{name}>) -> impl Responder {{\n\
\x20 match {name}::create(row.into_inner()).await {{\n\
\x20 Ok(row) => HttpResponse::Created().json(row),\n\
\x20 Err(error) => super::super::api::server_error(error),\n\
\x20 }}\n\
}}\n\n",
paths::create(model),
name = model.name
)
}
fn borrow(rust: &str) -> &'static str {
match rust {
"String" => "&",
_ => "",
}
}