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