Skip to content

Commit 3f70d1c

Browse files
committed
fix
1 parent 4257b89 commit 3f70d1c

29 files changed

+354
-457
lines changed

models/organization/org_times.go

Lines changed: 0 additions & 88 deletions
This file was deleted.

models/organization/org_worktime.go

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
// Copyright 2025 The Gitea Authors. All rights reserved.
2+
// SPDX-License-Identifier: MIT
3+
4+
package organization
5+
6+
import (
7+
"code.gitea.io/gitea/models/db"
8+
9+
"xorm.io/builder"
10+
)
11+
12+
type WorktimeSumByRepos struct {
13+
RepoName string
14+
SumTime int64
15+
}
16+
17+
func GetWorktimeByRepos(org *Organization, unitFrom, unixTo int64) (results []WorktimeSumByRepos, err error) {
18+
err = db.GetEngine(db.DefaultContext).
19+
Select("repository.name AS repo_name, SUM(tracked_time.time) AS sum_time").
20+
Table("tracked_time").
21+
Join("INNER", "issue", "tracked_time.issue_id = issue.id").
22+
Join("INNER", "repository", "issue.repo_id = repository.id").
23+
Where(builder.Eq{"repository.owner_id": org.ID}).
24+
And(builder.Eq{"tracked_time.deleted": false}).
25+
And(builder.Gte{"tracked_time.created_unix": unitFrom}).
26+
And(builder.Lte{"tracked_time.created_unix": unixTo}).
27+
GroupBy("repository.id").
28+
OrderBy("repository.name").
29+
Find(&results)
30+
return results, err
31+
}
32+
33+
type WorktimeSumByMilestones struct {
34+
RepoName string
35+
MilestoneName string
36+
MilestoneID string
37+
SumTime int64
38+
HideRepoName bool
39+
}
40+
41+
func GetWorktimeByMilestones(org *Organization, unitFrom, unixTo int64) (results []WorktimeSumByMilestones, err error) {
42+
err = db.GetEngine(db.DefaultContext).
43+
Select("repository.name AS repo_name, milestone.name AS milestone_name, milestone.id AS milestone_id, SUM(tracked_time.time) AS sum_time").
44+
Table("tracked_time").
45+
Join("INNER", "issue", "tracked_time.issue_id = issue.id").
46+
Join("INNER", "repository", "issue.repo_id = repository.id").
47+
Join("LEFT", "milestone", "issue.milestone_id = milestone.id").
48+
Where(builder.Eq{"repository.owner_id": org.ID}).
49+
And(builder.Eq{"tracked_time.deleted": false}).
50+
And(builder.Gte{"tracked_time.created_unix": unitFrom}).
51+
And(builder.Lte{"tracked_time.created_unix": unixTo}).
52+
GroupBy("repository.id, milestone.id").
53+
OrderBy("repository.name, milestone.deadline_unix, milestone.id").
54+
Find(&results)
55+
// Show only the first RepoName, for nicer output.
56+
prevRepoName := ""
57+
for i := 0; i < len(results); i++ {
58+
res := &results[i]
59+
if prevRepoName == res.RepoName {
60+
res.HideRepoName = true
61+
}
62+
prevRepoName = res.RepoName
63+
}
64+
return results, err
65+
}
66+
67+
type WorktimeSumByMembers struct {
68+
UserName string
69+
SumTime int64
70+
}
71+
72+
func GetWorktimeByMembers(org *Organization, unitFrom, unixTo int64) (results []WorktimeSumByMembers, err error) {
73+
err = db.GetEngine(db.DefaultContext).
74+
Select("user.name AS user_name, SUM(tracked_time.time) AS sum_time").
75+
Table("tracked_time").
76+
Join("INNER", "issue", "tracked_time.issue_id = issue.id").
77+
Join("INNER", "repository", "issue.repo_id = repository.id").
78+
Join("INNER", "user", "tracked_time.user_id = user.id").
79+
Where(builder.Eq{"repository.owner_id": org.ID}).
80+
And(builder.Eq{"tracked_time.deleted": false}).
81+
And(builder.Gte{"tracked_time.created_unix": unitFrom}).
82+
And(builder.Lte{"tracked_time.created_unix": unixTo}).
83+
GroupBy("user.id").
84+
OrderBy("sum_time DESC").
85+
Find(&results)
86+
return results, err
87+
}

0 commit comments

Comments
 (0)