summaryrefslogtreecommitdiffstats
path: root/models/fixture_generation.go
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-10-11 10:27:00 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-10-11 10:27:00 +0000
commit65aa53fc52ff15efe54df4147564828d535837f8 (patch)
tree31c51dad04fdcca80e6d3043c8bd49d2f1a51f83 /models/fixture_generation.go
parentInitial commit. (diff)
downloadforgejo-debian.tar.xz
forgejo-debian.zip
Adding upstream version 8.0.3.HEADupstream/8.0.3upstreamdebian
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'models/fixture_generation.go')
-rw-r--r--models/fixture_generation.go50
1 files changed, 50 insertions, 0 deletions
diff --git a/models/fixture_generation.go b/models/fixture_generation.go
new file mode 100644
index 00000000..6234caef
--- /dev/null
+++ b/models/fixture_generation.go
@@ -0,0 +1,50 @@
+// Copyright 2020 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package models
+
+import (
+ "context"
+ "fmt"
+ "strings"
+
+ "code.gitea.io/gitea/models/db"
+ access_model "code.gitea.io/gitea/models/perm/access"
+ repo_model "code.gitea.io/gitea/models/repo"
+)
+
+// GetYamlFixturesAccess returns a string containing the contents
+// for the access table, as recalculated using repo.RecalculateAccesses()
+func GetYamlFixturesAccess(ctx context.Context) (string, error) {
+ repos := make([]*repo_model.Repository, 0, 50)
+ if err := db.GetEngine(ctx).Find(&repos); err != nil {
+ return "", err
+ }
+
+ for _, repo := range repos {
+ repo.MustOwner(ctx)
+ if err := access_model.RecalculateAccesses(ctx, repo); err != nil {
+ return "", err
+ }
+ }
+
+ var b strings.Builder
+
+ accesses := make([]*access_model.Access, 0, 200)
+ if err := db.GetEngine(ctx).OrderBy("user_id, repo_id").Find(&accesses); err != nil {
+ return "", err
+ }
+
+ for i, a := range accesses {
+ fmt.Fprintf(&b, "-\n")
+ fmt.Fprintf(&b, " id: %d\n", i+1)
+ fmt.Fprintf(&b, " user_id: %d\n", a.UserID)
+ fmt.Fprintf(&b, " repo_id: %d\n", a.RepoID)
+ fmt.Fprintf(&b, " mode: %d\n", a.Mode)
+ if i < len(accesses)-1 {
+ fmt.Fprintf(&b, "\n")
+ }
+ }
+
+ return b.String(), nil
+}