// use crate::repo::messages::NotifyUser; use git_next_core::git::UserNotification; use serde_json::json; impl NotifyUser { pub fn as_json(&self, timestamp: time::OffsetDateTime) -> serde_json::Value { let timestamp = timestamp.unix_timestamp().to_string(); match &**self { UserNotification::CICheckFailed { forge_alias, repo_alias, commit, log, } => json!({ "type": "cicheck.failed", "timestamp": timestamp, "data": { "forge_alias": forge_alias, "repo_alias": repo_alias, "commit": { "sha": commit.sha(), "message": commit.message() }, "log": **log } }), UserNotification::RepoConfigLoadFailure { forge_alias, repo_alias, reason, } => json!({ "type": "config.load.failed", "timestamp": timestamp, "data": { "forge_alias": forge_alias, "repo_alias": repo_alias, "reason": reason } }), UserNotification::WebhookRegistration { forge_alias, repo_alias, reason, } => json!({ "type": "webhook.registration.failed", "timestamp": timestamp, "data": { "forge_alias": forge_alias, "repo_alias": repo_alias, "reason": reason } }), UserNotification::DevNotBasedOnMain { forge_alias, repo_alias, dev_branch, main_branch, dev_commit, main_commit, log, } => json!({ "type": "branch.dev.not-on-main", "timestamp": timestamp, "data": { "forge_alias": forge_alias, "repo_alias": repo_alias, "branches": { "dev": dev_branch, "main": main_branch }, "commits": { "dev": { "sha": dev_commit.sha(), "message": dev_commit.message() }, "main": { "sha": main_commit.sha(), "message": main_commit.message() } }, "log": **log } }), } } }