refactor: update
This commit is contained in:
parent
1c6317808a
commit
b3278bff62
@ -15,7 +15,10 @@ pub fn routes() -> Router<AppState> {
|
||||
"/app/:app/model/:model/add",
|
||||
get(views::new_item).post(views::create_item),
|
||||
)
|
||||
.route("/app/:app/model/:model/change/:id", get(views::change_item))
|
||||
.route(
|
||||
"/app/:app/model/:model/change/:id",
|
||||
get(views::change_item).patch(views::update_item),
|
||||
)
|
||||
.route(
|
||||
"/app/:app/model/:model/detail/:id",
|
||||
get(views::view_item_details),
|
||||
|
@ -239,6 +239,7 @@ pub async fn create_item(
|
||||
templates.render_html("admin/items/item_create.jinja", context)
|
||||
}
|
||||
|
||||
/// Change is the GET version.
|
||||
pub async fn change_item(
|
||||
templates: State<templates::Templates>,
|
||||
registry: State<Arc<state::AdminRegistry>>,
|
||||
@ -270,6 +271,41 @@ pub async fn change_item(
|
||||
templates.render_html("admin/items/item_change.jinja", context)
|
||||
}
|
||||
|
||||
pub async fn update_item(
|
||||
templates: State<templates::Templates>,
|
||||
registry: State<Arc<state::AdminRegistry>>,
|
||||
headers: HeaderMap,
|
||||
Path((app_key, model_key, id)): Path<(String, String, String)>,
|
||||
Form(form): Form<Value>,
|
||||
) -> impl IntoResponse {
|
||||
let context = if let Ok(repo) = registry.get_repository(&app_key, &model_key) {
|
||||
let mut repo = repo.lock().await;
|
||||
let admin_model = registry
|
||||
.get_model(&app_key, &model_key)
|
||||
.expect("Admin Model not found?");
|
||||
let key: LookupKey = id.into();
|
||||
|
||||
let result = repo.update(&admin_model, key, form).await;
|
||||
|
||||
AdminContext {
|
||||
base: base_template(&headers),
|
||||
available_apps: registry.get_apps(),
|
||||
item_info: Some(repo.info(&admin_model).await),
|
||||
item_list: repo.list(&admin_model).await,
|
||||
item: result,
|
||||
item_model: Some(admin_model),
|
||||
..Default::default()
|
||||
}
|
||||
} else {
|
||||
AdminContext {
|
||||
base: base_template(&headers),
|
||||
available_apps: registry.get_apps(),
|
||||
..Default::default()
|
||||
}
|
||||
};
|
||||
templates.render_html("admin/items/item_change.jinja", context)
|
||||
}
|
||||
|
||||
// Item Action allows running an action on one single dataset.
|
||||
pub async fn item_action(
|
||||
Path((app_key, model_key, model_id)): Path<(String, String, String)>,
|
||||
|
Loading…
Reference in New Issue
Block a user