Compare commits

..

1 commit

Author SHA1 Message Date
1d3ade6bdd WIP: feat: dispatch NotifyUser messages to server actor (2/2)
All checks were successful
ci/woodpecker/push/push-next Pipeline was successful
ci/woodpecker/push/tag-created Pipeline was successful
ci/woodpecker/push/cron-docker-builder Pipeline was successful
2024-07-21 13:29:41 +01:00
7 changed files with 18 additions and 61 deletions

View file

@ -38,7 +38,7 @@ impl From<config::webhook::Push> for Commit {
} }
newtype!(Sha: String, Display, Hash,PartialOrd, Ord: "The unique SHA for a git commit."); newtype!(Sha: String, Display, Hash,PartialOrd, Ord: "The unique SHA for a git commit.");
newtype!(Message: String, Display, Hash, PartialOrd, Ord: "The commit message for a git commit."); newtype!(Message: String, Hash, PartialOrd, Ord: "The commit message for a git commit.");
#[derive(Clone, Debug)] #[derive(Clone, Debug)]
pub struct Histories { pub struct Histories {

View file

@ -26,3 +26,4 @@ pub use repo_details::RepoDetails;
pub use repository::OpenRepository; pub use repository::OpenRepository;
pub use repository::Repository; pub use repository::Repository;
pub use user_notification::UserNotification; pub use user_notification::UserNotification;

View file

@ -1,27 +1,15 @@
use crate::Commit; use crate::Commit;
use git_next_config::{BranchName, ForgeAlias, RepoAlias}; use git_next_config::{ForgeAlias, RepoAlias};
#[derive(Clone, Debug, PartialEq, Eq)] #[derive(Clone, Debug, PartialEq, Eq)]
pub enum UserNotification { pub enum UserNotification {
CICheckFailed { CICheckFailed(ForgeAlias, RepoAlias, Commit),
forge_alias: ForgeAlias, RepoConfigLoadFailure(ForgeAlias, RepoAlias, String),
repo_alias: RepoAlias, WebhookRegistration(ForgeAlias, RepoAlias, String),
commit: Commit,
},
RepoConfigLoadFailure {
forge_alias: ForgeAlias,
repo_alias: RepoAlias,
reason: String,
},
WebhookRegistration {
forge_alias: ForgeAlias,
repo_alias: RepoAlias,
reason: String,
},
DevNotBasedOnMain { DevNotBasedOnMain {
forge_alias: ForgeAlias, forge_alias: git_next_config::ForgeAlias,
repo_alias: RepoAlias, repo_alias: git_next_config::RepoAlias,
dev_branch: BranchName, dev_branch: git_next_config::BranchName,
main_branch: BranchName, main_branch: git_next_config::BranchName,
}, },
} }

View file

@ -33,11 +33,11 @@ impl Handler<actor::messages::LoadConfigFromRepo> for actor::RepoActor {
), ),
Err(err) => actor::notify_user( Err(err) => actor::notify_user(
notify_user_recipient.as_ref(), notify_user_recipient.as_ref(),
UserNotification::RepoConfigLoadFailure { UserNotification::RepoConfigLoadFailure(
forge_alias, forge_alias,
repo_alias, repo_alias,
reason: err.to_string(), err.to_string(),
}, ),
log.as_ref(), log.as_ref(),
), ),
} }

View file

@ -42,11 +42,7 @@ impl Handler<actor::messages::ReceiveCIStatus> for actor::RepoActor {
tracing::warn!("Checks have failed"); tracing::warn!("Checks have failed");
actor::notify_user( actor::notify_user(
self.notify_user_recipient.as_ref(), self.notify_user_recipient.as_ref(),
UserNotification::CICheckFailed { UserNotification::CICheckFailed(forge_alias, repo_alias, next),
forge_alias,
repo_alias,
commit: next,
},
log.as_ref(), log.as_ref(),
); );
actor::delay_send( actor::delay_send(

View file

@ -32,11 +32,11 @@ impl Handler<RegisterWebhook> for RepoActor {
Err(err) => { Err(err) => {
actor::notify_user( actor::notify_user(
notify_user_recipient.as_ref(), notify_user_recipient.as_ref(),
UserNotification::WebhookRegistration { UserNotification::WebhookRegistration(
forge_alias, forge_alias,
repo_alias, repo_alias,
reason: err.to_string(), err.to_string(),
}, ),
log.as_ref(), log.as_ref(),
); );
} }

View file

@ -1,7 +1,5 @@
// //
use actix::prelude::*; use actix::prelude::*;
use derive_more::Deref;
use git_next_git::UserNotification;
use git_next_repo_actor::messages::NotifyUser; use git_next_repo_actor::messages::NotifyUser;
use crate::ServerActor; use crate::ServerActor;
@ -9,33 +7,7 @@ use crate::ServerActor;
impl Handler<NotifyUser> for ServerActor { impl Handler<NotifyUser> for ServerActor {
type Result = (); type Result = ();
fn handle(&mut self, msg: NotifyUser, _ctx: &mut Self::Context) -> Self::Result { fn handle(&mut self, _msg: NotifyUser, _ctx: &mut Self::Context) -> Self::Result {
let _message = match msg.deref() {
UserNotification::CICheckFailed {
forge_alias,
repo_alias,
commit,
} => format!(
"HELP ME!: {forge_alias}/{repo_alias}: CI Checks failed for commit: [{}] {}",commit.sha(), commit.message()
),
UserNotification::RepoConfigLoadFailure {
forge_alias,
repo_alias,
reason,
} => format!("HELP ME!: {forge_alias}/{repo_alias}: Failed to load config: {reason}"),
UserNotification::WebhookRegistration {
forge_alias,
repo_alias,
reason,
} => format!("HELP ME!: {forge_alias}/{repo_alias}: Failed to register webhook: {reason}"),
UserNotification::DevNotBasedOnMain {
forge_alias,
repo_alias,
dev_branch,
main_branch,
} => format!("HELP ME!: {forge_alias}/{repo_alias}: Dev branch '{dev_branch}' is not based on main branch '{main_branch}'"),
};
tracing::info!(_message);
// TODO: (#95) should notify user // TODO: (#95) should notify user
// send post to notification webhook url // send post to notification webhook url
} }