mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-25 14:55:40 +03:00
Remove deadcode under models/issues (#28536)
Using the Go Official tool `golang.org/x/tools/cmd/deadcode@latest` mentioned by [go blog](https://go.dev/blog/deadcode). Just use `deadcode .` in the project root folder and it gives a list of unused functions. Though it has some false alarms. This PR removes dead code detected in `models/issues`.
This commit is contained in:
parent
e7cb8da2a8
commit
6a725b6f9c
11 changed files with 9 additions and 200 deletions
|
@ -18,7 +18,10 @@ func TestUpdateAssignee(t *testing.T) {
|
||||||
assert.NoError(t, unittest.PrepareTestDatabase())
|
assert.NoError(t, unittest.PrepareTestDatabase())
|
||||||
|
|
||||||
// Fake issue with assignees
|
// Fake issue with assignees
|
||||||
issue, err := issues_model.GetIssueWithAttrsByID(db.DefaultContext, 1)
|
issue, err := issues_model.GetIssueByID(db.DefaultContext, 1)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
err = issue.LoadAttributes(db.DefaultContext)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
// Assign multiple users
|
// Assign multiple users
|
||||||
|
|
|
@ -534,15 +534,6 @@ func GetIssueByID(ctx context.Context, id int64) (*Issue, error) {
|
||||||
return issue, nil
|
return issue, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetIssueWithAttrsByID returns an issue with attributes by given ID.
|
|
||||||
func GetIssueWithAttrsByID(ctx context.Context, id int64) (*Issue, error) {
|
|
||||||
issue, err := GetIssueByID(ctx, id)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return issue, issue.LoadAttributes(ctx)
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetIssuesByIDs return issues with the given IDs.
|
// GetIssuesByIDs return issues with the given IDs.
|
||||||
// If keepOrder is true, the order of the returned issues will be the same as the given IDs.
|
// If keepOrder is true, the order of the returned issues will be the same as the given IDs.
|
||||||
func GetIssuesByIDs(ctx context.Context, issueIDs []int64, keepOrder ...bool) (IssueList, error) {
|
func GetIssuesByIDs(ctx context.Context, issueIDs []int64, keepOrder ...bool) (IssueList, error) {
|
||||||
|
|
|
@ -455,26 +455,6 @@ func applySubscribedCondition(sess *xorm.Session, subscriberID int64) *xorm.Sess
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetRepoIDsForIssuesOptions find all repo ids for the given options
|
|
||||||
func GetRepoIDsForIssuesOptions(ctx context.Context, opts *IssuesOptions, user *user_model.User) ([]int64, error) {
|
|
||||||
repoIDs := make([]int64, 0, 5)
|
|
||||||
e := db.GetEngine(ctx)
|
|
||||||
|
|
||||||
sess := e.Join("INNER", "repository", "`issue`.repo_id = `repository`.id")
|
|
||||||
|
|
||||||
applyConditions(sess, opts)
|
|
||||||
|
|
||||||
accessCond := repo_model.AccessibleRepositoryCondition(user, unit.TypeInvalid)
|
|
||||||
if err := sess.Where(accessCond).
|
|
||||||
Distinct("issue.repo_id").
|
|
||||||
Table("issue").
|
|
||||||
Find(&repoIDs); err != nil {
|
|
||||||
return nil, fmt.Errorf("unable to GetRepoIDsForIssuesOptions: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return repoIDs, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Issues returns a list of issues by given conditions.
|
// Issues returns a list of issues by given conditions.
|
||||||
func Issues(ctx context.Context, opts *IssuesOptions) (IssueList, error) {
|
func Issues(ctx context.Context, opts *IssuesOptions) (IssueList, error) {
|
||||||
sess := db.GetEngine(ctx).
|
sess := db.GetEngine(ctx).
|
||||||
|
|
|
@ -216,36 +216,6 @@ func TestIssue_loadTotalTimes(t *testing.T) {
|
||||||
assert.Equal(t, int64(3682), ms.TotalTrackedTime)
|
assert.Equal(t, int64(3682), ms.TotalTrackedTime)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetRepoIDsForIssuesOptions(t *testing.T) {
|
|
||||||
assert.NoError(t, unittest.PrepareTestDatabase())
|
|
||||||
user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
|
|
||||||
for _, test := range []struct {
|
|
||||||
Opts issues_model.IssuesOptions
|
|
||||||
ExpectedRepoIDs []int64
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
issues_model.IssuesOptions{
|
|
||||||
AssigneeID: 2,
|
|
||||||
},
|
|
||||||
[]int64{3, 32},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
issues_model.IssuesOptions{
|
|
||||||
RepoCond: builder.In("repo_id", 1, 2),
|
|
||||||
},
|
|
||||||
[]int64{1, 2},
|
|
||||||
},
|
|
||||||
} {
|
|
||||||
repoIDs, err := issues_model.GetRepoIDsForIssuesOptions(db.DefaultContext, &test.Opts, user)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
if assert.Len(t, repoIDs, len(test.ExpectedRepoIDs)) {
|
|
||||||
for i, repoID := range repoIDs {
|
|
||||||
assert.EqualValues(t, test.ExpectedRepoIDs[i], repoID)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func testInsertIssue(t *testing.T, title, content string, expectIndex int64) *issues_model.Issue {
|
func testInsertIssue(t *testing.T, title, content string, expectIndex int64) *issues_model.Issue {
|
||||||
var newIssue issues_model.Issue
|
var newIssue issues_model.Issue
|
||||||
t.Run(title, func(t *testing.T) {
|
t.Run(title, func(t *testing.T) {
|
||||||
|
|
|
@ -424,22 +424,6 @@ func GetLabelInOrgByID(ctx context.Context, orgID, labelID int64) (*Label, error
|
||||||
return l, nil
|
return l, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetLabelIDsInOrgByNames returns a list of labelIDs by names in a given
|
|
||||||
// organization.
|
|
||||||
func GetLabelIDsInOrgByNames(ctx context.Context, orgID int64, labelNames []string) ([]int64, error) {
|
|
||||||
if orgID <= 0 {
|
|
||||||
return nil, ErrOrgLabelNotExist{0, orgID}
|
|
||||||
}
|
|
||||||
labelIDs := make([]int64, 0, len(labelNames))
|
|
||||||
|
|
||||||
return labelIDs, db.GetEngine(ctx).Table("label").
|
|
||||||
Where("org_id = ?", orgID).
|
|
||||||
In("name", labelNames).
|
|
||||||
Asc("name").
|
|
||||||
Cols("id").
|
|
||||||
Find(&labelIDs)
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetLabelsInOrgByIDs returns a list of labels by IDs in given organization,
|
// GetLabelsInOrgByIDs returns a list of labels by IDs in given organization,
|
||||||
// it silently ignores label IDs that do not belong to the organization.
|
// it silently ignores label IDs that do not belong to the organization.
|
||||||
func GetLabelsInOrgByIDs(ctx context.Context, orgID int64, labelIDs []int64) ([]*Label, error) {
|
func GetLabelsInOrgByIDs(ctx context.Context, orgID int64, labelIDs []int64) ([]*Label, error) {
|
||||||
|
|
|
@ -164,30 +164,6 @@ func TestGetLabelInOrgByName(t *testing.T) {
|
||||||
assert.True(t, issues_model.IsErrOrgLabelNotExist(err))
|
assert.True(t, issues_model.IsErrOrgLabelNotExist(err))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetLabelInOrgByNames(t *testing.T) {
|
|
||||||
assert.NoError(t, unittest.PrepareTestDatabase())
|
|
||||||
labelIDs, err := issues_model.GetLabelIDsInOrgByNames(db.DefaultContext, 3, []string{"orglabel3", "orglabel4"})
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
assert.Len(t, labelIDs, 2)
|
|
||||||
|
|
||||||
assert.Equal(t, int64(3), labelIDs[0])
|
|
||||||
assert.Equal(t, int64(4), labelIDs[1])
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestGetLabelInOrgByNamesDiscardsNonExistentLabels(t *testing.T) {
|
|
||||||
assert.NoError(t, unittest.PrepareTestDatabase())
|
|
||||||
// orglabel99 doesn't exists.. See labels.yml
|
|
||||||
labelIDs, err := issues_model.GetLabelIDsInOrgByNames(db.DefaultContext, 3, []string{"orglabel3", "orglabel4", "orglabel99"})
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
assert.Len(t, labelIDs, 2)
|
|
||||||
|
|
||||||
assert.Equal(t, int64(3), labelIDs[0])
|
|
||||||
assert.Equal(t, int64(4), labelIDs[1])
|
|
||||||
assert.NoError(t, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestGetLabelInOrgByID(t *testing.T) {
|
func TestGetLabelInOrgByID(t *testing.T) {
|
||||||
assert.NoError(t, unittest.PrepareTestDatabase())
|
assert.NoError(t, unittest.PrepareTestDatabase())
|
||||||
label, err := issues_model.GetLabelInOrgByID(db.DefaultContext, 3, 3)
|
label, err := issues_model.GetLabelInOrgByID(db.DefaultContext, 3, 3)
|
||||||
|
|
|
@ -160,32 +160,6 @@ func (m MilestonesStats) Total() int64 {
|
||||||
return m.OpenCount + m.ClosedCount
|
return m.OpenCount + m.ClosedCount
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetMilestonesStatsByRepoCond returns milestone statistic information for dashboard by given conditions.
|
|
||||||
func GetMilestonesStatsByRepoCond(ctx context.Context, repoCond builder.Cond) (*MilestonesStats, error) {
|
|
||||||
var err error
|
|
||||||
stats := &MilestonesStats{}
|
|
||||||
|
|
||||||
sess := db.GetEngine(ctx).Where("is_closed = ?", false)
|
|
||||||
if repoCond.IsValid() {
|
|
||||||
sess.And(builder.In("repo_id", builder.Select("id").From("repository").Where(repoCond)))
|
|
||||||
}
|
|
||||||
stats.OpenCount, err = sess.Count(new(Milestone))
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
sess = db.GetEngine(ctx).Where("is_closed = ?", true)
|
|
||||||
if repoCond.IsValid() {
|
|
||||||
sess.And(builder.In("repo_id", builder.Select("id").From("repository").Where(repoCond)))
|
|
||||||
}
|
|
||||||
stats.ClosedCount, err = sess.Count(new(Milestone))
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return stats, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetMilestonesStatsByRepoCondAndKw returns milestone statistic information for dashboard by given repo conditions and name keyword.
|
// GetMilestonesStatsByRepoCondAndKw returns milestone statistic information for dashboard by given repo conditions and name keyword.
|
||||||
func GetMilestonesStatsByRepoCondAndKw(ctx context.Context, repoCond builder.Cond, keyword string) (*MilestonesStats, error) {
|
func GetMilestonesStatsByRepoCondAndKw(ctx context.Context, repoCond builder.Cond, keyword string) (*MilestonesStats, error) {
|
||||||
var err error
|
var err error
|
||||||
|
|
|
@ -17,7 +17,6 @@ import (
|
||||||
"code.gitea.io/gitea/modules/util"
|
"code.gitea.io/gitea/modules/util"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"xorm.io/builder"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestMilestone_State(t *testing.T) {
|
func TestMilestone_State(t *testing.T) {
|
||||||
|
@ -285,34 +284,6 @@ func TestGetMilestonesByRepoIDs(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetMilestonesStats(t *testing.T) {
|
|
||||||
assert.NoError(t, unittest.PrepareTestDatabase())
|
|
||||||
|
|
||||||
test := func(repoID int64) {
|
|
||||||
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: repoID})
|
|
||||||
stats, err := issues_model.GetMilestonesStatsByRepoCond(db.DefaultContext, builder.And(builder.Eq{"repo_id": repoID}))
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.EqualValues(t, repo.NumMilestones-repo.NumClosedMilestones, stats.OpenCount)
|
|
||||||
assert.EqualValues(t, repo.NumClosedMilestones, stats.ClosedCount)
|
|
||||||
}
|
|
||||||
test(1)
|
|
||||||
test(2)
|
|
||||||
test(3)
|
|
||||||
|
|
||||||
stats, err := issues_model.GetMilestonesStatsByRepoCond(db.DefaultContext, builder.And(builder.Eq{"repo_id": unittest.NonexistentID}))
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.EqualValues(t, 0, stats.OpenCount)
|
|
||||||
assert.EqualValues(t, 0, stats.ClosedCount)
|
|
||||||
|
|
||||||
repo1 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
|
|
||||||
repo2 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 2})
|
|
||||||
|
|
||||||
milestoneStats, err := issues_model.GetMilestonesStatsByRepoCond(db.DefaultContext, builder.In("repo_id", []int64{repo1.ID, repo2.ID}))
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.EqualValues(t, repo1.NumOpenMilestones+repo2.NumOpenMilestones, milestoneStats.OpenCount)
|
|
||||||
assert.EqualValues(t, repo1.NumClosedMilestones+repo2.NumClosedMilestones, milestoneStats.ClosedCount)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestNewMilestone(t *testing.T) {
|
func TestNewMilestone(t *testing.T) {
|
||||||
assert.NoError(t, unittest.PrepareTestDatabase())
|
assert.NoError(t, unittest.PrepareTestDatabase())
|
||||||
milestone := &issues_model.Milestone{
|
milestone := &issues_model.Milestone{
|
||||||
|
|
|
@ -78,24 +78,6 @@ func (err ErrPullRequestAlreadyExists) Unwrap() error {
|
||||||
return util.ErrAlreadyExist
|
return util.ErrAlreadyExist
|
||||||
}
|
}
|
||||||
|
|
||||||
// ErrPullRequestHeadRepoMissing represents a "ErrPullRequestHeadRepoMissing" error
|
|
||||||
type ErrPullRequestHeadRepoMissing struct {
|
|
||||||
ID int64
|
|
||||||
HeadRepoID int64
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsErrErrPullRequestHeadRepoMissing checks if an error is a ErrPullRequestHeadRepoMissing.
|
|
||||||
func IsErrErrPullRequestHeadRepoMissing(err error) bool {
|
|
||||||
_, ok := err.(ErrPullRequestHeadRepoMissing)
|
|
||||||
return ok
|
|
||||||
}
|
|
||||||
|
|
||||||
// Error does pretty-printing :D
|
|
||||||
func (err ErrPullRequestHeadRepoMissing) Error() string {
|
|
||||||
return fmt.Sprintf("pull request head repo missing [id: %d, head_repo_id: %d]",
|
|
||||||
err.ID, err.HeadRepoID)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ErrPullWasClosed is used close a closed pull request
|
// ErrPullWasClosed is used close a closed pull request
|
||||||
type ErrPullWasClosed struct {
|
type ErrPullWasClosed struct {
|
||||||
ID int64
|
ID int64
|
||||||
|
@ -758,18 +740,6 @@ func (pr *PullRequest) IsSameRepo() bool {
|
||||||
return pr.BaseRepoID == pr.HeadRepoID
|
return pr.BaseRepoID == pr.HeadRepoID
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetPullRequestsByHeadBranch returns all prs by head branch
|
|
||||||
// Since there could be multiple prs with the same head branch, this function returns a slice of prs
|
|
||||||
func GetPullRequestsByHeadBranch(ctx context.Context, headBranch string, headRepoID int64) ([]*PullRequest, error) {
|
|
||||||
log.Trace("GetPullRequestsByHeadBranch: headBranch: '%s', headRepoID: '%d'", headBranch, headRepoID)
|
|
||||||
prs := make([]*PullRequest, 0, 2)
|
|
||||||
if err := db.GetEngine(ctx).Where(builder.Eq{"head_branch": headBranch, "head_repo_id": headRepoID}).
|
|
||||||
Find(&prs); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return prs, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetBaseBranchLink returns the relative URL of the base branch
|
// GetBaseBranchLink returns the relative URL of the base branch
|
||||||
func (pr *PullRequest) GetBaseBranchLink(ctx context.Context) string {
|
func (pr *PullRequest) GetBaseBranchLink(ctx context.Context) string {
|
||||||
if err := pr.LoadBaseRepo(ctx); err != nil {
|
if err := pr.LoadBaseRepo(ctx); err != nil {
|
||||||
|
|
|
@ -29,20 +29,6 @@ func (err ErrIssueStopwatchNotExist) Unwrap() error {
|
||||||
return util.ErrNotExist
|
return util.ErrNotExist
|
||||||
}
|
}
|
||||||
|
|
||||||
// ErrIssueStopwatchAlreadyExist represents an error that stopwatch is already exist
|
|
||||||
type ErrIssueStopwatchAlreadyExist struct {
|
|
||||||
UserID int64
|
|
||||||
IssueID int64
|
|
||||||
}
|
|
||||||
|
|
||||||
func (err ErrIssueStopwatchAlreadyExist) Error() string {
|
|
||||||
return fmt.Sprintf("issue stopwatch already exists[uid: %d, issue_id: %d", err.UserID, err.IssueID)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (err ErrIssueStopwatchAlreadyExist) Unwrap() error {
|
|
||||||
return util.ErrAlreadyExist
|
|
||||||
}
|
|
||||||
|
|
||||||
// Stopwatch represents a stopwatch for time tracking.
|
// Stopwatch represents a stopwatch for time tracking.
|
||||||
type Stopwatch struct {
|
type Stopwatch struct {
|
||||||
ID int64 `xorm:"pk autoincr"`
|
ID int64 `xorm:"pk autoincr"`
|
||||||
|
|
|
@ -18,8 +18,12 @@ func TestDeleteNotPassedAssignee(t *testing.T) {
|
||||||
assert.NoError(t, unittest.PrepareTestDatabase())
|
assert.NoError(t, unittest.PrepareTestDatabase())
|
||||||
|
|
||||||
// Fake issue with assignees
|
// Fake issue with assignees
|
||||||
issue, err := issues_model.GetIssueWithAttrsByID(db.DefaultContext, 1)
|
issue, err := issues_model.GetIssueByID(db.DefaultContext, 1)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
err = issue.LoadAttributes(db.DefaultContext)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
assert.Len(t, issue.Assignees, 1)
|
assert.Len(t, issue.Assignees, 1)
|
||||||
|
|
||||||
user1, err := user_model.GetUserByID(db.DefaultContext, 1) // This user is already assigned (see the definition in fixtures), so running UpdateAssignee should unassign him
|
user1, err := user_model.GetUserByID(db.DefaultContext, 1) // This user is already assigned (see the definition in fixtures), so running UpdateAssignee should unassign him
|
||||||
|
|
Loading…
Reference in a new issue