/
repo_dcs.go
101 lines (91 loc) · 2.54 KB
/
repo_dcs.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
// Copyright 2023 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package repo
import (
"context"
"code.gitea.io/gitea/models/db"
"code.gitea.io/gitea/models/door43metadata"
"code.gitea.io/gitea/modules/dcs"
"xorm.io/builder"
)
// LoadLatestDMs loads the latest DMs
func (repo *Repository) LoadLatestDMs(ctx context.Context) error {
if repo.LatestProdDM == nil {
dm := &Door43Metadata{RepoID: repo.ID, Stage: door43metadata.StageProd, IsLatestForStage: true}
has, err := db.GetEngine(ctx).Desc("release_date_unix").Get(dm)
if err != nil {
return err
}
if has {
repo.LatestProdDM = dm
}
}
if repo.LatestPreprodDM == nil {
dm := &Door43Metadata{RepoID: repo.ID, Stage: door43metadata.StagePreProd, IsLatestForStage: true}
has, err := db.GetEngine(ctx).Desc("release_date_unix").Get(dm)
if err != nil {
return err
}
if has {
repo.LatestPreprodDM = dm
}
}
if repo.DefaultBranchDM == nil {
dm := &Door43Metadata{RepoID: repo.ID, Stage: door43metadata.StageLatest, IsLatestForStage: true}
has, err := db.GetEngine(ctx).Desc("release_date_unix").Get(dm)
if err != nil {
return err
}
if has {
repo.DefaultBranchDM = dm
}
}
if repo.RepoDM == nil {
dm := &Door43Metadata{}
has, err := db.GetEngine(ctx).
Where(builder.Eq{"repo_id": repo.ID}).
And(builder.Eq{"is_repo_metadata": true}).
Desc("release_date_unix").
Get(dm)
if err != nil {
return err
}
if has && dm != nil {
repo.RepoDM = dm
} else {
title := repo.Name
metadataType := dcs.GetMetadataTypeFromRepoName(repo.Name)
metadataVersion := dcs.GetDefaultMetadataVersionForType(metadataType)
subject := dcs.GetSubjectFromRepoName(repo.Name)
lang := dcs.GetLanguageFromRepoName(repo.Name)
langDir := dcs.GetLanguageDirection(lang)
langTitle := dcs.GetLanguageTitle(lang)
langIsGL := dcs.LanguageIsGL(lang)
repo.RepoDM = &Door43Metadata{
RepoID: repo.ID,
MetadataType: metadataType,
MetadataVersion: metadataVersion,
Title: title,
Subject: subject,
Language: lang,
LanguageDirection: langDir,
LanguageTitle: langTitle,
LanguageIsGL: langIsGL,
}
}
}
return nil
}
// LoadLatestDMs loads the latest Door43Metadatas for the given RepositoryList
func (rl RepositoryList) LoadLatestDMs(ctx context.Context) error {
if rl.Len() == 0 {
return nil
}
var lastErr error
for _, repo := range rl {
if err := repo.LoadLatestDMs(ctx); err != nil && lastErr == nil {
lastErr = err
}
}
return lastErr
}