forgejo_backup/services/convert/action.go
Earl Warren cf4d0e6c34 bug: unify RepoActionRun and ActionRun structs (#8250)
Two pull requests were merged at the same time

- https://codeberg.org/forgejo/forgejo/pulls/7699
- https://codeberg.org/forgejo/forgejo/pulls/7508

And added conflicting structs ActionRun modules/structs.  That broke
the forgejo development branch and a quick fix was made to resolve
the name conflict.

- https://codeberg.org/forgejo/forgejo/pulls/8066

However that creates an undesirable duplication of two structures that
serve the same purpose but are different.

- Remove RepoActionRun and replace it with ActionRun
- convert.ToActionRun has one more argument, the doer, because it
  is determined differently in the context of webhooks or API

### Tests

- No need because the two pull requests involved already have good coverage.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/8250
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Reviewed-by: klausfyhn <klausfyhn@noreply.codeberg.org>
Reviewed-by: Christopher Besch <mail@chris-besch.com>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
2025-06-23 07:54:32 +02:00

49 lines
1.5 KiB
Go

// Copyright 2025 The Forgejo Authors. All rights reserved.
// SPDX-License-Identifier: GPL-3.0-or-later
package convert
import (
"context"
actions_model "forgejo.org/models/actions"
access_model "forgejo.org/models/perm/access"
user_model "forgejo.org/models/user"
api "forgejo.org/modules/structs"
)
// ToActionRun convert actions_model.User to api.ActionRun
// the run needs all attributes loaded
func ToActionRun(ctx context.Context, run *actions_model.ActionRun, doer *user_model.User) *api.ActionRun {
if run == nil {
return nil
}
permissionInRepo, _ := access_model.GetUserRepoPermission(ctx, run.Repo, doer)
return &api.ActionRun{
ID: run.ID,
Title: run.Title,
Repo: ToRepo(ctx, run.Repo, permissionInRepo),
WorkflowID: run.WorkflowID,
Index: run.Index,
TriggerUser: ToUser(ctx, run.TriggerUser, doer),
ScheduleID: run.ScheduleID,
PrettyRef: run.PrettyRef(),
IsRefDeleted: run.IsRefDeleted,
CommitSHA: run.CommitSHA,
IsForkPullRequest: run.IsForkPullRequest,
NeedApproval: run.NeedApproval,
ApprovedBy: run.ApprovedBy,
Event: run.Event.Event(),
EventPayload: run.EventPayload,
TriggerEvent: run.TriggerEvent,
Status: run.Status.String(),
Started: run.Started.AsTime(),
Stopped: run.Stopped.AsTime(),
Created: run.Created.AsTime(),
Updated: run.Updated.AsTime(),
Duration: run.Duration(),
HTMLURL: run.HTMLURL(),
}
}