OA64RZOMOMELKGZE4MKMBJH6E6WE7BMP7OZHWQCZENSUZZ2ISXFQC D4SBRY6KHEAMGUEVWSUYHNCRYXCOC5JJ3N3DQ47ZXOXQGT73VERAC IFYNLE5HO7JIZ5LJYNQ7ZQGK7C7RWPT54DFMCDHPT4CEGCZN7ACQC YJLEG4WRYKKQJMMDRKIRG4T4L7ZZ7N777EKIRSHHWHNZYWZJ7G5AC PCR2LDLTK6XVSBXJL6IMGQP7GSE5UNFCT6WRM2H5EPQ2AZWFRCFAC IS5JL73JHDDJQGGGYBUUJNEBFT3STOKGB7V33M6J44CB2TPOVPXQC YYJ76Q7V6G7FHSNZ25MU3ZZY5KGXIODBHLWOZUGB4FIKL7PUCNAAC .layer(TraceLayer::new_for_http().make_span_with(|req: &Request| {let method = req.method();let uri = req.uri();let matched_path = req.extensions().get::<MatchedPath>().map(|matched_path| matched_path.as_str());tracing::debug_span!("request", %method, %uri, matched_path)}).on_failure(()),)
) -> Result<Json<Status>, Error> {if let Some((_, job)) = config.jobs.lock().unwrap().get(&job) {if let Some(s) = &*job.borrow() {return Ok(Json(s.clone()));
) -> Result<Json<Option<Status>>, Error> {debug!("status");let mut jobs = config.jobs.lock().unwrap();let mut closed = false;if let Some((kill, status)) = jobs.get_mut(&job) {let s = if let Some(s) = &*status.borrow_and_update() {Some(s.clone())} else {None};if kill.is_closed() {jobs.remove(&job);
Ok(StatusCode::OK)}#[axum::debug_handler]pub async fn kill(State(config): State<Config>,Path(job): Path<uuid::Uuid>,) -> Result<StatusCode, Error> {if let Some((kill, job)) = config.jobs.lock().unwrap().get_mut(&job) {let k = std::mem::replace(kill, tokio::sync::oneshot::channel().0);k.send(()).unwrap_or(())}
tower-http.workspace = true
let status: ci::Status = status.json().await.unwrap();debug!("STATUS {:?}", status);use crate::db::jobs::dsl as jobs;diesel::update(jobs::jobs.find(job)).set((jobs::status.eq(status.code),jobs::ended.eq(status.finished),)).execute(db).await.unwrap();Some(status)
let status: Option<ci::Status> = status.json().await.unwrap();if let Some(ref status) = status {debug!("STATUS {:?}", status);use crate::db::jobs::dsl as jobs;diesel::update(jobs::jobs.find(job)).set((jobs::status.eq(status.code),jobs::ended.eq(status.finished),)).execute(db).await.unwrap();}status