omni_orchestrator/schemas/v1/api/
workers.rs1use crate::models::worker::Worker;
13use super::super::db::queries as db;
14use rocket::http::Status;
15use rocket::serde::json::{json, Json, Value};
16use rocket::{delete, get, http::ContentType, post, put, Data, State};
17use serde::{Deserialize, Serialize};
18use sqlx::MySql;
19use std::collections::HashMap;
20use std::sync::Arc;
21use tokio::sync::RwLock;
22
23#[get("/workers?<page>&<per_page>")]
25pub async fn list_workers(
26 page: Option<u64>,
27 per_page: Option<u64>,
28 pool: &State<sqlx::Pool<MySql>>,
29) -> Result<Json<Vec<Worker>>, Status> {
30 let workers = db::worker::list_workers(pool, page, per_page).await.map_err(|_| Status::InternalServerError)?;
31 Ok(Json(workers))
32}
33
34#[get("/workers/<worker_id>")]
36pub async fn get_worker_by_id(
37 worker_id: i64,
38 pool: &State<sqlx::Pool<MySql>>,
39) -> Result<Json<Worker>, Status> {
40 let worker = db::worker::get_worker_by_id(pool, worker_id).await.map_err(|_| Status::NotFound)?;
41 Ok(Json(worker))
42}