headless_lms_server/controllers/main_frontend/
chatbot_models.rs1use crate::prelude::*;
3
4use models::chatbot_configurations_models::ChatbotConfigurationModel;
5
6#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
7#[cfg_attr(feature = "ts_rs", derive(TS))]
8pub struct CourseInfo {
9 course_id: Uuid,
10}
11
12#[instrument(skip(pool))]
14async fn get_model(
15 chatbot_model_id: web::Path<Uuid>,
16 payload: web::Json<Uuid>,
17 pool: web::Data<PgPool>,
18 user: AuthUser,
19) -> ControllerResult<web::Json<ChatbotConfigurationModel>> {
20 let mut conn = pool.acquire().await?;
21 let model =
22 models::chatbot_configurations_models::get_by_id(&mut conn, *chatbot_model_id).await?;
23 let token = authorize(&mut conn, Act::Edit, Some(user.id), Res::Course(*payload)).await?;
24
25 token.authorized_ok(web::Json(model))
26}
27
28#[instrument(skip(pool))]
30async fn get_all_models(
31 course_info: web::Query<CourseInfo>,
32 pool: web::Data<PgPool>,
33 user: AuthUser,
34) -> ControllerResult<web::Json<Vec<ChatbotConfigurationModel>>> {
35 let mut conn = pool.acquire().await?;
36 let models = models::chatbot_configurations_models::get_all(&mut conn).await?;
37 let token = authorize(
38 &mut conn,
39 Act::Edit,
40 Some(user.id),
41 Res::Course(course_info.course_id),
42 )
43 .await?;
44
45 token.authorized_ok(web::Json(models))
46}
47
48pub fn _add_routes(cfg: &mut web::ServiceConfig) {
49 cfg.route("/{id}", web::get().to(get_model))
50 .route("/", web::get().to(get_all_models));
51}