This commit is contained in:
Kar
2026-02-01 20:22:29 +05:30
commit 52265ed4cc
30 changed files with 2058 additions and 0 deletions

67
internal/events/event.go Normal file
View File

@@ -0,0 +1,67 @@
package events
import (
"encoding/json"
"time"
"deployment-manager/internal/model"
)
type EventType string
const (
EventTypeRepoCreated EventType = "repo_created"
EventTypeRepoUpdated EventType = "repo_updated"
EventTypeRepoDeleted EventType = "repo_deleted"
EventTypeDeployStarted EventType = "deploy_started"
EventTypeDeploySuccess EventType = "deploy_success"
EventTypeDeployError EventType = "deploy_error"
EventTypeLog EventType = "log"
)
type Event struct {
ID string `json:"id"`
Type EventType `json:"type"`
RepoID int64 `json:"repo_id"`
Data map[string]interface{} `json:"data"`
Timestamp time.Time `json:"timestamp"`
}
func NewEvent(eventType EventType, repoID int64, data map[string]interface{}) *Event {
return &Event{
ID: generateEventID(),
Type: eventType,
RepoID: repoID,
Data: data,
Timestamp: time.Now(),
}
}
func NewRepoEvent(repo *model.Repo, eventType EventType) *Event {
return NewEvent(eventType, repo.ID, map[string]interface{}{
"repo": repo,
})
}
func NewLogEvent(repoID int64, message string) *Event {
return NewEvent(EventTypeLog, repoID, map[string]interface{}{
"message": message,
})
}
func (e *Event) ToJSON() ([]byte, error) {
return json.Marshal(e)
}
func generateEventID() string {
return time.Now().Format("20060102150405") + "-" + randomString(8)
}
func randomString(n int) string {
const letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
b := make([]byte, n)
for i := range b {
b[i] = letters[i%len(letters)]
}
return string(b)
}