feat(updates,events): Streamline update state changes into one event type only (#27)
All checks were successful
/ build (push) Successful in 3m35s

Reviewed-on: #27
Co-authored-by: Varakh <varakh@varakh.de>
Co-committed-by: Varakh <varakh@varakh.de>
This commit is contained in:
Varakh 2024-04-26 19:45:51 +00:00 committed by Varakh
parent 1073148eee
commit 678da51dc0
4 changed files with 13 additions and 41 deletions

View file

@ -239,14 +239,12 @@ action type, which can send notifications to a variety of services like Gotify,
Supported events are the following: Supported events are the following:
| Event name | Description | | Event name | Description |
|:--------------------------------|:--------------------------------------------------------------------| |:-----------------------|:--------------------------------------------------------------------|
| `update_created` | An update has been created | | `update_created` | An update has been created |
| `update_updated` | An update has been updated (not necessarily its version attribute!) | | `update_updated` | An update has been updated (not necessarily its version attribute!) |
| `update_updated_state_pending` | An update's state changed to pending | | `update_updated_state` | An update's state changed |
| `update_updated_state_approved` | An update's state changed to approved | | `update_deleted` | An update has been removed |
| `update_updated_state_ignored` | An update's state changed to ignored |
| `update_deleted` | An update has been removed |
For privacy, an action's configuration supports upda's **secrets** vault, which means that before an action is For privacy, an action's configuration supports upda's **secrets** vault, which means that before an action is
triggered, any occurrence of `<SECRET>SECRET_KEY</SECRET>` is properly replaced by the value of the `SECRET_KEY` defined triggered, any occurrence of `<SECRET>SECRET_KEY</SECRET>` is properly replaced by the value of the `SECRET_KEY` defined

View file

@ -2330,9 +2330,7 @@ components:
enum: enum:
- update_created - update_created
- update_updated - update_updated
- update_updated_state_pending - update_updated_state
- update_updated_state_approved
- update_updated_state_ignored
- update_deleted - update_deleted
createdAt: createdAt:
type: string type: string

View file

@ -39,12 +39,10 @@ func (e WebhookType) Value() string {
type EventName string type EventName string
const ( const (
EventNameUpdateCreated EventName = "update_created" EventNameUpdateCreated EventName = "update_created"
EventNameUpdateUpdated EventName = "update_updated" EventNameUpdateUpdated EventName = "update_updated"
EventNameUpdateUpdatedPending EventName = "update_updated_state_pending" EventNameUpdateUpdatedState EventName = "update_updated_state"
EventNameUpdateUpdatedApproved EventName = "update_updated_state_approved" EventNameUpdateDeleted EventName = "update_deleted"
EventNameUpdateUpdatedIgnored EventName = "update_updated_state_ignored"
EventNameUpdateDeleted EventName = "update_deleted"
) )
func (e *EventName) Scan(value interface{}) error { func (e *EventName) Scan(value interface{}) error {

View file

@ -45,17 +45,7 @@ func (s *eventService) createUpdateUpdated(old *Update, new *Update) *Event {
if old.State == new.State { if old.State == new.State {
eventName = api.EventNameUpdateUpdated eventName = api.EventNameUpdateUpdated
} else { } else {
switch new.State { eventName = api.EventNameUpdateUpdatedState
case api.UpdateStatePending.Value():
eventName = api.EventNameUpdateUpdatedPending
break
case api.UpdateStateApproved.Value():
eventName = api.EventNameUpdateUpdatedApproved
break
case api.UpdateStateIgnored.Value():
eventName = api.EventNameUpdateUpdatedIgnored
break
}
} }
s.createWithWarnOnly(eventName, &api.EventPayloadUpdateUpdatedDto{ s.createWithWarnOnly(eventName, &api.EventPayloadUpdateUpdatedDto{
@ -218,19 +208,7 @@ func (s *eventService) extractPayloadInfo(event *Event) (*eventPayloadInformatio
return nil, newServiceError(General, err) return nil, newServiceError(General, err)
} }
return &eventPayloadInformationDto{Host: p.Host, Application: p.Application, Provider: p.Provider, Version: p.Version, State: p.State}, nil return &eventPayloadInformationDto{Host: p.Host, Application: p.Application, Provider: p.Provider, Version: p.Version, State: p.State}, nil
case api.EventNameUpdateUpdatedApproved.Value(): case api.EventNameUpdateUpdatedState.Value():
var p api.EventPayloadUpdateUpdatedDto
if p, err = util.UnmarshalGenericJSON[api.EventPayloadUpdateUpdatedDto](bytes); err != nil {
return nil, newServiceError(General, err)
}
return &eventPayloadInformationDto{Host: p.Host, Application: p.Application, Provider: p.Provider, Version: p.Version, State: p.State}, nil
case api.EventNameUpdateUpdatedPending.Value():
var p api.EventPayloadUpdateUpdatedDto
if p, err = util.UnmarshalGenericJSON[api.EventPayloadUpdateUpdatedDto](bytes); err != nil {
return nil, newServiceError(General, err)
}
return &eventPayloadInformationDto{Host: p.Host, Application: p.Application, Provider: p.Provider, Version: p.Version, State: p.State}, nil
case api.EventNameUpdateUpdatedIgnored.Value():
var p api.EventPayloadUpdateUpdatedDto var p api.EventPayloadUpdateUpdatedDto
if p, err = util.UnmarshalGenericJSON[api.EventPayloadUpdateUpdatedDto](bytes); err != nil { if p, err = util.UnmarshalGenericJSON[api.EventPayloadUpdateUpdatedDto](bytes); err != nil {
return nil, newServiceError(General, err) return nil, newServiceError(General, err)