Store workflow definitions as table rows and drop YAML
This commit is contained in:
+12
-12
@@ -122,7 +122,7 @@ func (m *Manager) reviewsSettled(ctx context.Context, reviews []api.Review) (boo
|
||||
if r.State != api.ReviewStateDone {
|
||||
continue
|
||||
}
|
||||
def, err := m.store.ReviewDefinition(ctx, r.Id)
|
||||
_, def, err := m.store.ReviewDefinition(ctx, r.Id)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
@@ -192,12 +192,12 @@ func (m *Manager) startReviews(ctx context.Context, task api.Task, snap api.Snap
|
||||
now := time.Now().UTC()
|
||||
if len(changes.Files) == 0 {
|
||||
slog.Info("review skipped, snapshot has no diff", "task", task.Id, "snapshot", snap.N)
|
||||
return m.store.CreateReview(ctx, api.Review{Id: store.NewID(), TaskId: task.Id, SnapshotN: snap.N, State: api.ReviewStateSkipped, CreatedAt: now, FinishedAt: &now}, nil)
|
||||
return m.store.CreateReview(ctx, api.Review{Id: store.NewID(), TaskId: task.Id, SnapshotN: snap.N, State: api.ReviewStateSkipped, CreatedAt: now, FinishedAt: &now}, "")
|
||||
}
|
||||
|
||||
def, err := m.store.GetWorkflow(ctx, project.ReviewWorkflow)
|
||||
frozen, err := m.store.FreezeWorkflow(ctx, project.ReviewWorkflow)
|
||||
if err == nil {
|
||||
err = reviewProblem(def)
|
||||
err = reviewProblem(frozen.Definition)
|
||||
}
|
||||
if err != nil {
|
||||
return m.store.CreateReview(ctx, api.Review{
|
||||
@@ -209,11 +209,11 @@ func (m *Manager) startReviews(ctx context.Context, task api.Task, snap api.Snap
|
||||
Error: fmt.Sprintf("project %s reviews with workflow %q, which can't run: %v", project.Name, project.ReviewWorkflow, err),
|
||||
CreatedAt: now,
|
||||
FinishedAt: &now,
|
||||
}, nil)
|
||||
}, "")
|
||||
}
|
||||
|
||||
for _, stage := range workflow.Starts(def) {
|
||||
err = m.startReviewer(ctx, task, project, snap, def, stage, nil)
|
||||
for _, stage := range workflow.Starts(frozen.Definition) {
|
||||
err = m.startReviewer(ctx, task, project, snap, frozen.DefinitionID, frozen.Definition, stage, nil)
|
||||
if err != nil {
|
||||
slog.Error("start review stage", "task", task.Id, "snapshot", snap.N, "stage", stage, "err", err)
|
||||
}
|
||||
@@ -228,7 +228,7 @@ func (m *Manager) advanceReviews(ctx context.Context, r api.Review) bool {
|
||||
m.reviewMu.Lock()
|
||||
defer m.reviewMu.Unlock()
|
||||
|
||||
def, err := m.store.ReviewDefinition(ctx, r.Id)
|
||||
defID, def, err := m.store.ReviewDefinition(ctx, r.Id)
|
||||
if err != nil {
|
||||
slog.Error("load review definition", "review", r.Id, "err", err)
|
||||
return false
|
||||
@@ -274,7 +274,7 @@ func (m *Manager) advanceReviews(ctx context.Context, r api.Review) bool {
|
||||
if len(inputs) != len(workflow.After(def, next)) {
|
||||
continue
|
||||
}
|
||||
err = m.startReviewer(ctx, task, project, snap, def, next, inputs)
|
||||
err = m.startReviewer(ctx, task, project, snap, defID, def, next, inputs)
|
||||
if err != nil {
|
||||
slog.Error("start review stage", "task", task.Id, "snapshot", r.SnapshotN, "stage", next, "err", err)
|
||||
continue
|
||||
@@ -284,7 +284,7 @@ func (m *Manager) advanceReviews(ctx context.Context, r api.Review) bool {
|
||||
return started
|
||||
}
|
||||
|
||||
func (m *Manager) startReviewer(ctx context.Context, task api.Task, project api.Project, snap api.Snapshot, def api.WorkflowDefinition, stage string, inputs []api.Review) (err error) {
|
||||
func (m *Manager) startReviewer(ctx context.Context, task api.Task, project api.Project, snap api.Snapshot, defID string, def api.WorkflowDefinition, stage string, inputs []api.Review) (err error) {
|
||||
model := workflow.Get(def, stage).Model
|
||||
vendor := workflow.VendorOf(model)
|
||||
reviewID := store.NewID()
|
||||
@@ -305,7 +305,7 @@ func (m *Manager) startReviewer(ctx context.Context, task api.Task, project api.
|
||||
Error: "the reviewer didn't start: " + err.Error(),
|
||||
CreatedAt: now,
|
||||
FinishedAt: &now,
|
||||
}, &def)
|
||||
}, defID)
|
||||
if rerr != nil {
|
||||
slog.Error("record review that didn't start", "task", task.Id, "stage", stage, "err", rerr)
|
||||
return
|
||||
@@ -356,7 +356,7 @@ func (m *Manager) startReviewer(ctx context.Context, task api.Task, project api.
|
||||
Model: model,
|
||||
State: api.ReviewStateRunning,
|
||||
CreatedAt: time.Now().UTC(),
|
||||
}, &def)
|
||||
}, defID)
|
||||
if err != nil {
|
||||
m.endReviewer(ctx, sess.Id, project, reviewID)
|
||||
return err
|
||||
|
||||
Reference in New Issue
Block a user