Skip to content

Commit

Permalink
fix: provide issue url (#20)
Browse files Browse the repository at this point in the history
* fix: add urls to response

* fix: adjust commit url

* fix: provide issue url
  • Loading branch information
Wolftousen authored Aug 8, 2024
1 parent 7a523cb commit 4c3eb6e
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 8 deletions.
5 changes: 3 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,12 @@ opentelemetry-otlp = { version = "0.17", optional = true }
tracing = "0.1.40"
tracing-opentelemetry-instrumentation-sdk = "0.19.0"
futures = "0.3.30"
regex = "1.10.6"

[features]
otlp-over-http = [
"opentelemetry-otlp/reqwest-client",
"opentelemetry-otlp/reqwest-rustls",
"opentelemetry-otlp/http-proto",
"opentelemetry-otlp/tls",
]
]
1 change: 1 addition & 0 deletions src/helpers/loki.rs
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ pub struct Body {
pub struct Issue {
pub created_at: DateTime<Utc>,
pub closed_at: Option<DateTime<Utc>>,
pub number: u32,
}

#[derive(Deserialize, Debug)]
Expand Down
29 changes: 24 additions & 5 deletions src/routes/data.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
use std::{collections::HashMap, sync::Arc};
use chrono::{DateTime, Duration, TimeDelta, Utc};
use regex::Regex;
use serde::Serialize;
use axum::{
extract::Extension, http::StatusCode, response::Json
Expand Down Expand Up @@ -27,8 +28,9 @@ pub struct Record {
merged_at: Option<DateTime<Utc>>,
created_at: DateTime<Utc>,
fixed_at: Option<DateTime<Utc>>,
deploy_url: String,
fixed_url: Option<String>,
deploy_url: String,
issue_url: Option<String>,
change_url: String,
}

Expand Down Expand Up @@ -80,7 +82,8 @@ async fn sort_deploy_data(data: QueryResponse) -> HashMap<String, Vec<Record>> {
#[derive(Serialize, Debug, Clone, Default)]
pub struct IssueEntry {
created_at: DateTime<Utc>,
closed_at: Option<DateTime<Utc>>
closed_at: Option<DateTime<Utc>>,
number: u32,
}

async fn sort_issue_data(data: QueryResponse) -> HashMap<String, Vec<IssueEntry>> {
Expand All @@ -93,7 +96,8 @@ async fn sort_issue_data(data: QueryResponse) -> HashMap<String, Vec<IssueEntry>

let ie = IssueEntry {
created_at: issue.created_at,
closed_at: issue.closed_at
closed_at: issue.closed_at,
number: issue.number,
};

grouped_issues.entry(rn.clone())
Expand Down Expand Up @@ -176,10 +180,25 @@ fn find_failures(deploy_data: &mut HashMap<String, Vec<Record>>, issue_data: &Ha

if deploy_issues.len() > 0 {
let opened_at = deploy_issues.iter().filter_map(|entry| Some(entry.created_at)).min();
let closed_at = deploy_issues.iter().filter_map(|entry| entry.closed_at).max();
let closing = deploy_issues.iter()
.filter_map(|record| record.closed_at.map(|time| (record, time)))
.max_by_key(|&(_, time)| time)
.map(|(record, _)| record);


deploy.failed_at = opened_at;
deploy.fixed_at = closed_at;

match closing {
Some(issue) => {
deploy.fixed_at = issue.closed_at;

let re = Regex::new(r"actions/runs/\d+").unwrap();
let url = re.replace(deploy.deploy_url.as_str(), &format!("issues/{}", issue.number));

deploy.issue_url = Some(url.to_string());
},
None => {}
}
}


Expand Down

0 comments on commit 4c3eb6e

Please sign in to comment.