Skip to content

Commit e3fc000

Browse files
committed
feat: add project events
Signed-off-by: Miguel Martinez <miguel@chainloop.dev>
1 parent 601513f commit e3fc000

6 files changed

Lines changed: 19 additions & 10 deletions

File tree

app/controlplane/pkg/biz/auditor.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,14 @@ func (uc *AuditorUseCase) Dispatch(ctx context.Context, entry auditor.LogEntry,
7373

7474
payload, err := auditor.GenerateAuditEvent(entry, opts...)
7575
if err != nil {
76+
uc.log.Error("failed to generate audit event", "error", err)
7677
sentry.CaptureException(fmt.Errorf("failed to generate audit event: %w", err))
7778
return
7879
}
7980

8081
// Send event to event bus
8182
if err := uc.publisher.Publish(payload); err != nil {
83+
uc.log.Error("failed to publish event", "error", err)
8284
sentry.CaptureException(fmt.Errorf("failed to publish event: %w", err))
8385
}
8486
}

app/controlplane/pkg/biz/projectversion.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ type ProjectVersion struct {
3838
CreatedAt *time.Time
3939
// ReleasedAt is the time when the version was released.
4040
ReleasedAt *time.Time
41+
ProjectID uuid.UUID
4142
}
4243

4344
type ProjectVersionRepo interface {

app/controlplane/pkg/biz/workflow.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,8 @@ func (uc *WorkflowUseCase) Create(ctx context.Context, opts *WorkflowCreateOpts)
161161
return nil, fmt.Errorf("failed to parse org ID %q: %w", opts.OrgID, err)
162162
}
163163

164+
existingProject, _ := uc.projectRepo.FindProjectByOrgIDAndName(ctx, orgUUID, opts.Project)
165+
164166
wf, err := uc.wfRepo.Create(ctx, opts)
165167
if err != nil {
166168
if IsErrAlreadyExists(err) {
@@ -177,11 +179,6 @@ func (uc *WorkflowUseCase) Create(ctx context.Context, opts *WorkflowCreateOpts)
177179
}
178180
}
179181

180-
existingProject, err := uc.projectRepo.FindProjectByOrgIDAndName(ctx, orgUUID, opts.Project)
181-
if err != nil {
182-
return nil, fmt.Errorf("failed to find project: %w", err)
183-
}
184-
185182
// Dispatch audit event for project creation if a new project was created
186183
if existingProject == nil {
187184
uc.auditorUC.Dispatch(ctx, &events.ProjectCreated{

app/controlplane/pkg/biz/workflowrun.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//
2-
// Copyright 2024 The Chainloop Authors.
2+
// Copyright 2024-2025 The Chainloop Authors.
33
//
44
// Licensed under the Apache License, Version 2.0 (the "License");
55
// you may not use this file except in compliance with the License.
@@ -80,6 +80,7 @@ const (
8080

8181
type WorkflowRunRepoCreateResult struct {
8282
Run *WorkflowRun
83+
Project *Project
8384
VersionCreated bool
8485
}
8586

@@ -247,16 +248,16 @@ func (uc *WorkflowRunUseCase) Create(ctx context.Context, opts *WorkflowRunCreat
247248
}
248249

249250
// Dispatch audit event for project version creation if a new version was created
250-
if result.VersionCreated && result.Run != nil && result.Run.Workflow != nil && uc.auditorUC != nil {
251+
if result.VersionCreated && uc.auditorUC != nil && result.Project != nil {
251252
uc.auditorUC.Dispatch(ctx, &events.ProjectVersionCreated{
252253
ProjectBase: &events.ProjectBase{
253-
ProjectID: &result.Run.Workflow.ProjectID,
254-
ProjectName: result.Run.Workflow.Project,
254+
ProjectID: &result.Project.ID,
255+
ProjectName: result.Project.Name,
255256
},
256257
VersionID: &result.Run.ProjectVersion.ID,
257258
Version: result.Run.ProjectVersion.Version,
258259
Prerelease: result.Run.ProjectVersion.Prerelease,
259-
}, &result.Run.Workflow.OrgID)
260+
}, &result.Project.OrgID)
260261
}
261262

262263
return result.Run, nil

app/controlplane/pkg/data/projectversion.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ func entProjectVersionToBiz(v *ent.ProjectVersion) *biz.ProjectVersion {
126126
TotalWorkflowRuns: v.WorkflowRunCount,
127127
CreatedAt: toTimePtr(v.CreatedAt),
128128
ReleasedAt: toTimePtr(v.ReleasedAt),
129+
ProjectID: v.ProjectID,
129130
}
130131

131132
return pv

app/controlplane/pkg/data/workflowrun.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
"github.com/chainloop-dev/chainloop/app/controlplane/pkg/data/ent"
2727
"github.com/chainloop-dev/chainloop/app/controlplane/pkg/data/ent/attestation"
2828
"github.com/chainloop-dev/chainloop/app/controlplane/pkg/data/ent/predicate"
29+
"github.com/chainloop-dev/chainloop/app/controlplane/pkg/data/ent/project"
2930
"github.com/chainloop-dev/chainloop/app/controlplane/pkg/data/ent/projectversion"
3031
"github.com/chainloop-dev/chainloop/app/controlplane/pkg/data/ent/workflow"
3132
"github.com/chainloop-dev/chainloop/app/controlplane/pkg/data/ent/workflowrun"
@@ -124,9 +125,15 @@ func (r *WorkflowRunRepo) Create(ctx context.Context, opts *biz.WorkflowRunRepoC
124125
return nil, fmt.Errorf("reloading project version: %w", err)
125126
}
126127

128+
project, err := r.data.DB.Project.Query().Where(project.ID(wf.ProjectID)).First(ctx)
129+
if err != nil {
130+
return nil, fmt.Errorf("reloading project: %w", err)
131+
}
132+
127133
run.ProjectVersion = entProjectVersionToBiz(version)
128134

129135
return &biz.WorkflowRunRepoCreateResult{
136+
Project: entProjectToBiz(project),
130137
Run: run,
131138
VersionCreated: versionCreated,
132139
}, nil

0 commit comments

Comments
 (0)