From b92deabb7a52d5caa8a17e014172aa933dc9f3e7 Mon Sep 17 00:00:00 2001 From: Luke Street Date: Sun, 20 Apr 2025 16:22:00 -0600 Subject: [PATCH] Add enable_pr_comments option to projects --- ...cca067142cbc16805c73f186bca873a8e9c98.json | 20 ------------------- ...84f92eacd4508f2162a77db4fdd0f8f30669f.json | 20 +++++++++++++++++++ migrations/17_project_enable_pr_comments.sql | 1 + src/db/mod.rs | 8 ++++++-- src/handlers/github.rs | 3 +++ src/models.rs | 1 + 6 files changed, 31 insertions(+), 22 deletions(-) delete mode 100644 .sqlx/query-40da4ebeb3450a8c78a890e359bcca067142cbc16805c73f186bca873a8e9c98.json create mode 100644 .sqlx/query-92992242dd758ba9981b43e130684f92eacd4508f2162a77db4fdd0f8f30669f.json create mode 100644 migrations/17_project_enable_pr_comments.sql diff --git a/.sqlx/query-40da4ebeb3450a8c78a890e359bcca067142cbc16805c73f186bca873a8e9c98.json b/.sqlx/query-40da4ebeb3450a8c78a890e359bcca067142cbc16805c73f186bca873a8e9c98.json deleted file mode 100644 index 3473186..0000000 --- a/.sqlx/query-40da4ebeb3450a8c78a890e359bcca067142cbc16805c73f186bca873a8e9c98.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "db_name": "SQLite", - "query": "\n INSERT INTO reports (project_id, version, git_commit, timestamp, data, data_version)\n VALUES (?, ?, ?, ?, ?, ?)\n ON CONFLICT (project_id, version COLLATE NOCASE, git_commit COLLATE NOCASE) DO UPDATE\n SET timestamp = EXCLUDED.timestamp\n RETURNING id\n ", - "describe": { - "columns": [ - { - "name": "id", - "ordinal": 0, - "type_info": "Integer" - } - ], - "parameters": { - "Right": 6 - }, - "nullable": [ - false - ] - }, - "hash": "40da4ebeb3450a8c78a890e359bcca067142cbc16805c73f186bca873a8e9c98" -} diff --git a/.sqlx/query-92992242dd758ba9981b43e130684f92eacd4508f2162a77db4fdd0f8f30669f.json b/.sqlx/query-92992242dd758ba9981b43e130684f92eacd4508f2162a77db4fdd0f8f30669f.json new file mode 100644 index 0000000..bc74550 --- /dev/null +++ b/.sqlx/query-92992242dd758ba9981b43e130684f92eacd4508f2162a77db4fdd0f8f30669f.json @@ -0,0 +1,20 @@ +{ + "db_name": "SQLite", + "query": "\n INSERT INTO reports (project_id, version, git_commit, git_commit_message, timestamp, data, data_version)\n VALUES (?, ?, ?, ?, ?, ?, ?)\n ON CONFLICT (project_id, version COLLATE NOCASE, git_commit COLLATE NOCASE) DO UPDATE\n SET timestamp = EXCLUDED.timestamp\n RETURNING id\n ", + "describe": { + "columns": [ + { + "name": "id", + "ordinal": 0, + "type_info": "Integer" + } + ], + "parameters": { + "Right": 7 + }, + "nullable": [ + false + ] + }, + "hash": "92992242dd758ba9981b43e130684f92eacd4508f2162a77db4fdd0f8f30669f" +} diff --git a/migrations/17_project_enable_pr_comments.sql b/migrations/17_project_enable_pr_comments.sql new file mode 100644 index 0000000..03cd8fb --- /dev/null +++ b/migrations/17_project_enable_pr_comments.sql @@ -0,0 +1 @@ +ALTER TABLE projects ADD COLUMN enable_pr_comments BOOLEAN NOT NULL DEFAULT TRUE; diff --git a/src/db/mod.rs b/src/db/mod.rs index fee20b8..b2ec3e5 100644 --- a/src/db/mod.rs +++ b/src/db/mod.rs @@ -362,7 +362,7 @@ impl Database { let mut conn = self.pool.acquire().await?; let project = match sqlx::query!( r#" - SELECT id AS "id!", owner, repo, name, short_name, default_category, default_version, platform, workflow_id + SELECT id AS "id!", owner, repo, name, short_name, default_category, default_version, platform, workflow_id, enable_pr_comments FROM projects WHERE owner = ? COLLATE NOCASE AND repo = ? COLLATE NOCASE "#, @@ -382,6 +382,7 @@ impl Database { default_version: row.default_version, platform: row.platform, workflow_id: row.workflow_id, + enable_pr_comments: row.enable_pr_comments, }, None => return Ok(None), }; @@ -397,7 +398,7 @@ impl Database { let project_id_db = project_id as i64; let project = match sqlx::query!( r#" - SELECT owner, repo, name, short_name, default_category, default_version, platform, workflow_id + SELECT owner, repo, name, short_name, default_category, default_version, platform, workflow_id, enable_pr_comments FROM projects WHERE id = ? "#, @@ -416,6 +417,7 @@ impl Database { default_version: row.default_version, platform: row.platform, workflow_id: row.workflow_id, + enable_pr_comments: row.enable_pr_comments, }, None => return Ok(None), }; @@ -548,6 +550,7 @@ impl Database { default_version, platform, workflow_id, + enable_pr_comments AS "enable_pr_comments!", git_commit, git_commit_message, MAX(timestamp) AS "timestamp: time::OffsetDateTime", @@ -579,6 +582,7 @@ impl Database { default_version: row.default_version, platform: row.platform, workflow_id: row.workflow_id, + enable_pr_comments: row.enable_pr_comments, }, commit: match (row.git_commit, row.timestamp) { (Some(sha), Some(timestamp)) => Some(Commit { diff --git a/src/handlers/github.rs b/src/handlers/github.rs index 8b1575b..e4be7b0 100644 --- a/src/handlers/github.rs +++ b/src/handlers/github.rs @@ -208,6 +208,9 @@ async fn handle_workflow_run_completed( ); } } else if workflow_run.event == "pull_request" { + if !project_info.project.enable_pr_comments { + return Ok(()); + } // Fetch any associated pull requests if pull_requests.is_empty() { let head = if let Some(head_owner) = diff --git a/src/models.rs b/src/models.rs index db4e5b6..39214b6 100644 --- a/src/models.rs +++ b/src/models.rs @@ -17,6 +17,7 @@ pub struct Project { pub default_version: Option, pub platform: Option, pub workflow_id: Option, + pub enable_pr_comments: bool, } impl Project {