@@ -29,6 +29,7 @@ import (
2929var (
3030 _ auditor.LogEntry = (* ProjectCreated )(nil )
3131 _ auditor.LogEntry = (* ProjectVersionCreated )(nil )
32+ _ auditor.LogEntry = (* ProjectVersionDeleted )(nil )
3233 _ auditor.LogEntry = (* ProjectMembershipAdded )(nil )
3334 _ auditor.LogEntry = (* ProjectMembershipRemoved )(nil )
3435 _ auditor.LogEntry = (* ProjectMemberRoleUpdated )(nil )
@@ -38,6 +39,7 @@ const (
3839 ProjectType auditor.TargetType = "Project"
3940 ProjectCreatedActionType string = "ProjectCreated"
4041 ProjectVersionCreatedActionType string = "ProjectVersionCreated"
42+ ProjectVersionDeletedActionType string = "ProjectVersionDeleted"
4143 ProjectMembershipAddedActionType string = "ProjectMembershipAdded"
4244 ProjectMembershipRemovedActionType string = "ProjectMembershipRemoved"
4345 ProjectMemberRoleUpdatedType string = "ProjectMemberRoleUpdated"
@@ -122,6 +124,38 @@ func (p *ProjectVersionCreated) Description() string {
122124 return fmt .Sprintf ("%s has created %s version '%s' for project '%s'" , auditor .GetActorIdentifier (), releaseType , p .Version , p .ProjectName )
123125}
124126
127+ // ProjectVersionDeleted represents the deletion of a project version
128+ type ProjectVersionDeleted struct {
129+ * ProjectBase
130+ VersionID * uuid.UUID `json:"version_id,omitempty"`
131+ Version string `json:"version,omitempty"`
132+ Prerelease bool `json:"prerelease"`
133+ }
134+
135+ func (p * ProjectVersionDeleted ) ActionType () string {
136+ return ProjectVersionDeletedActionType
137+ }
138+
139+ func (p * ProjectVersionDeleted ) ActionInfo () (json.RawMessage , error ) {
140+ if _ , err := p .ProjectBase .ActionInfo (); err != nil {
141+ return nil , err
142+ }
143+
144+ if p .VersionID == nil || p .Version == "" {
145+ return nil , errors .New ("version id and version are required" )
146+ }
147+
148+ return json .Marshal (& p )
149+ }
150+
151+ func (p * ProjectVersionDeleted ) Description () string {
152+ releaseType := "release"
153+ if p .Prerelease {
154+ releaseType = "prerelease"
155+ }
156+ return fmt .Sprintf ("%s has deleted %s version '%s' for project '%s'" , auditor .GetActorIdentifier (), releaseType , p .Version , p .ProjectName )
157+ }
158+
125159// Helper function to make role names more user-friendly
126160func prettyRole (role string ) string {
127161 // Convert the role to a prettier format
0 commit comments