MCPcopy Create free account
hub / github.com/gogs/gogs / GetIssueStats

Function GetIssueStats

internal/database/issue.go:1238–1297  ·  view source on GitHub ↗

GetIssueStats returns issue statistic information by given conditions.

(opts *IssueStatsOptions)

Source from the content-addressed store, hash-verified

1236
1237// GetIssueStats returns issue statistic information by given conditions.
1238func GetIssueStats(opts *IssueStatsOptions) *IssueStats {
1239 stats := &IssueStats{}
1240
1241 countSession := func(opts *IssueStatsOptions) *xorm.Session {
1242 sess := x.Where("issue.repo_id = ?", opts.RepoID).And("is_pull = ?", opts.IsPull)
1243
1244 if len(opts.Labels) > 0 && opts.Labels != "0" {
1245 labelIDs := tool.StringsToInt64s(strings.Split(opts.Labels, ","))
1246 if len(labelIDs) > 0 {
1247 sess.Join("INNER", "issue_label", "issue.id = issue_id").In("label_id", labelIDs)
1248 }
1249 }
1250
1251 if opts.MilestoneID > 0 {
1252 sess.And("issue.milestone_id = ?", opts.MilestoneID)
1253 }
1254
1255 if opts.AssigneeID > 0 {
1256 sess.And("assignee_id = ?", opts.AssigneeID)
1257 }
1258
1259 return sess
1260 }
1261
1262 switch opts.FilterMode {
1263 case FilterModeYourRepos, FilterModeAssign:
1264 stats.OpenCount, _ = countSession(opts).
1265 And("is_closed = ?", false).
1266 Count(new(Issue))
1267
1268 stats.ClosedCount, _ = countSession(opts).
1269 And("is_closed = ?", true).
1270 Count(new(Issue))
1271 case FilterModeCreate:
1272 stats.OpenCount, _ = countSession(opts).
1273 And("poster_id = ?", opts.UserID).
1274 And("is_closed = ?", false).
1275 Count(new(Issue))
1276
1277 stats.ClosedCount, _ = countSession(opts).
1278 And("poster_id = ?", opts.UserID).
1279 And("is_closed = ?", true).
1280 Count(new(Issue))
1281 case FilterModeMention:
1282 stats.OpenCount, _ = countSession(opts).
1283 Join("INNER", "issue_user", "issue.id = issue_user.issue_id").
1284 And("issue_user.uid = ?", opts.UserID).
1285 And("issue_user.is_mentioned = ?", true).
1286 And("issue.is_closed = ?", false).
1287 Count(new(Issue))
1288
1289 stats.ClosedCount, _ = countSession(opts).
1290 Join("INNER", "issue_user", "issue.id = issue_user.issue_id").
1291 And("issue_user.uid = ?", opts.UserID).
1292 And("issue_user.is_mentioned = ?", true).
1293 And("issue.is_closed = ?", true).
1294 Count(new(Issue))
1295 }

Callers 1

issuesFunction · 0.92

Calls 5

StringsToInt64sFunction · 0.92
WhereMethod · 0.80
SplitMethod · 0.80
InMethod · 0.80
CountMethod · 0.45

Tested by

no test coverage detected