use axum::{ extract::{Form, State}, response::{IntoResponse, Redirect}, routing::post, Router, }; use super::repo::Provider as _; use crate::{app::App, error::InternalError, login::repo::logins::Login}; pub fn router() -> Router { Router::new().route("/create", post(on_create)) } #[derive(serde::Deserialize)] struct CreateRequest { name: String, } async fn on_create( State(app): State, _: Login, // requires auth, but doesn't actually care who you are Form(form): Form, ) -> Result { let mut tx = app.db.begin().await?; tx.channels().create(&form.name).await?; tx.commit().await?; Ok(Redirect::to("/")) }