Repository: go-gitea/gitea
File: models/repo/license.go (Go)

Code before:

	"code.gitea.io/gitea/models/db"
	"code.gitea.io/gitea/modules/timeutil"
)

func init() {
	db.RegisterModel(new(RepoLicense))
}

type RepoLicense struct { //revive:disable-line:exported
	ID          int64 `xorm:"pk autoincr"`
	RepoID      int64 `xorm:"UNIQUE(s) NOT NULL"`
	CommitID    string
	License     string             `xorm:"VARCHAR(255) UNIQUE(s) NOT NULL"`
	CreatedUnix timeutil.TimeStamp `xorm:"INDEX CREATED"`
	UpdatedUnix timeutil.TimeStamp `xorm:"INDEX UPDATED"`
}

// RepoLicenseList defines a list of repo licenses
type RepoLicenseList []*RepoLicense //revive:disable-line:exported

func (rll RepoLicenseList) StringList() []string {
	if len(rll) == 0 {
		return nil
	}
	licenses := make([]string, 0, len(rll))
	for _, rl := range rll {
		licenses = append(licenses, rl.License)
	}
	return licenses
}

// GetRepoLicenses returns the license statistics for a repository
func GetRepoLicenses(ctx context.Context, repo *Repository) (RepoLicenseList, error) {
	licenses := make(RepoLicenseList, 0)
	if err := db.GetEngine(ctx).Where("`repo_id` = ?", repo.ID).Asc("`license`").Find(&licenses); err != nil {
		return nil, err
	}
	return licenses, nil
}

// UpdateRepoLicenses updates the license statistics for repository
func UpdateRepoLicenses(ctx context.Context, repo *Repository, commitID string, licenses []string) error {
	oldLicenses, err := GetRepoLicenses(ctx, repo)
	if err != nil {
		return err
	}
	for _, license := range licenses {
		upd := false
		for _, o := range oldLicenses {
			// Update already existing license

Review comment (suggestion):
```suggestion
	var licenses []string
```

Let's keep it simple as before 🙏

Code after:

	"code.gitea.io/gitea/models/db"
	"code.gitea.io/gitea/modules/timeutil"
)

func init() {
	db.RegisterModel(new(RepoLicense))
}

type RepoLicense struct { //revive:disable-line:exported
	ID          int64 `xorm:"pk autoincr"`
	RepoID      int64 `xorm:"UNIQUE(s) NOT NULL"`
	CommitID    string
	License     string             `xorm:"VARCHAR(255) UNIQUE(s) NOT NULL"`
	CreatedUnix timeutil.TimeStamp `xorm:"INDEX CREATED"`
	UpdatedUnix timeutil.TimeStamp `xorm:"INDEX UPDATED"`
}

// RepoLicenseList defines a list of repo licenses
type RepoLicenseList []*RepoLicense //revive:disable-line:exported

func (rll RepoLicenseList) StringList() []string {
	var licenses []string
	for _, rl := range rll {
		licenses = append(licenses, rl.License)
	}
	return licenses
}

// GetRepoLicenses returns the license statistics for a repository
func GetRepoLicenses(ctx context.Context, repo *Repository) (RepoLicenseList, error) {
	licenses := make(RepoLicenseList, 0)
	if err := db.GetEngine(ctx).Where("`repo_id` = ?", repo.ID).Asc("`license`").Find(&licenses); err != nil {
		return nil, err
	}
	return licenses, nil
}

// UpdateRepoLicenses updates the license statistics for repository
func UpdateRepoLicenses(ctx context.Context, repo *Repository, commitID string, licenses []string) error {
	oldLicenses, err := GetRepoLicenses(ctx, repo)
	if err != nil {
		return err
	}
	for _, license := range licenses {
		upd := false
		for _, o := range oldLicenses {
			// Update already existing license
			if o.License == license {
				o.CommitID = commitID
				if _, err := db.GetEngine(ctx).ID(o.ID).Cols("`commit_id`").Update(o); err != nil {