code.gitea.io/gitea@v1.22.3/models/fixture_generation.go (about)

     1  // Copyright 2020 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package models
     5  
     6  import (
     7  	"context"
     8  	"fmt"
     9  	"strings"
    10  
    11  	"code.gitea.io/gitea/models/db"
    12  	access_model "code.gitea.io/gitea/models/perm/access"
    13  	repo_model "code.gitea.io/gitea/models/repo"
    14  )
    15  
    16  // GetYamlFixturesAccess returns a string containing the contents
    17  // for the access table, as recalculated using repo.RecalculateAccesses()
    18  func GetYamlFixturesAccess(ctx context.Context) (string, error) {
    19  	repos := make([]*repo_model.Repository, 0, 50)
    20  	if err := db.GetEngine(ctx).Find(&repos); err != nil {
    21  		return "", err
    22  	}
    23  
    24  	for _, repo := range repos {
    25  		repo.MustOwner(ctx)
    26  		if err := access_model.RecalculateAccesses(ctx, repo); err != nil {
    27  			return "", err
    28  		}
    29  	}
    30  
    31  	var b strings.Builder
    32  
    33  	accesses := make([]*access_model.Access, 0, 200)
    34  	if err := db.GetEngine(ctx).OrderBy("user_id, repo_id").Find(&accesses); err != nil {
    35  		return "", err
    36  	}
    37  
    38  	for i, a := range accesses {
    39  		fmt.Fprintf(&b, "-\n")
    40  		fmt.Fprintf(&b, "  id: %d\n", i+1)
    41  		fmt.Fprintf(&b, "  user_id: %d\n", a.UserID)
    42  		fmt.Fprintf(&b, "  repo_id: %d\n", a.RepoID)
    43  		fmt.Fprintf(&b, "  mode: %d\n", a.Mode)
    44  		if i < len(accesses)-1 {
    45  			fmt.Fprintf(&b, "\n")
    46  		}
    47  	}
    48  
    49  	return b.String(), nil
    50  }