summaryrefslogtreecommitdiffstats
path: root/models/user_heatmap.go
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2022-08-25 10:31:57 +0800
committerGitHub <noreply@github.com>2022-08-25 10:31:57 +0800
commit1d8543e7db58d7c4973758e47f005c4d8bd7d7a3 (patch)
treeb60c99e2dfd69ccb998f8a0829d98d7cadcf0d6b /models/user_heatmap.go
parent4a4bfafa238bf48851f8c11fa3701bd42b912475 (diff)
downloadgitea-1d8543e7db58d7c4973758e47f005c4d8bd7d7a3.tar.gz
gitea-1d8543e7db58d7c4973758e47f005c4d8bd7d7a3.zip
Move some files into models' sub packages (#20262)
* Move some files into models' sub packages * Move functions * merge main branch * Fix check * fix check * Fix some tests * Fix lint * Fix lint * Revert lint changes * Fix error comments * Fix lint Co-authored-by: 6543 <6543@obermui.de>
Diffstat (limited to 'models/user_heatmap.go')
-rw-r--r--models/user_heatmap.go72
1 files changed, 0 insertions, 72 deletions
diff --git a/models/user_heatmap.go b/models/user_heatmap.go
deleted file mode 100644
index e908837ae8..0000000000
--- a/models/user_heatmap.go
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright 2018 The Gitea Authors. All rights reserved.
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file.package models
-
-package models
-
-import (
- "code.gitea.io/gitea/models/db"
- "code.gitea.io/gitea/models/organization"
- user_model "code.gitea.io/gitea/models/user"
- "code.gitea.io/gitea/modules/setting"
- "code.gitea.io/gitea/modules/timeutil"
-)
-
-// UserHeatmapData represents the data needed to create a heatmap
-type UserHeatmapData struct {
- Timestamp timeutil.TimeStamp `json:"timestamp"`
- Contributions int64 `json:"contributions"`
-}
-
-// GetUserHeatmapDataByUser returns an array of UserHeatmapData
-func GetUserHeatmapDataByUser(user, doer *user_model.User) ([]*UserHeatmapData, error) {
- return getUserHeatmapData(user, nil, doer)
-}
-
-// GetUserHeatmapDataByUserTeam returns an array of UserHeatmapData
-func GetUserHeatmapDataByUserTeam(user *user_model.User, team *organization.Team, doer *user_model.User) ([]*UserHeatmapData, error) {
- return getUserHeatmapData(user, team, doer)
-}
-
-func getUserHeatmapData(user *user_model.User, team *organization.Team, doer *user_model.User) ([]*UserHeatmapData, error) {
- hdata := make([]*UserHeatmapData, 0)
-
- if !activityReadable(user, doer) {
- return hdata, nil
- }
-
- // Group by 15 minute intervals which will allow the client to accurately shift the timestamp to their timezone.
- // The interval is based on the fact that there are timezones such as UTC +5:30 and UTC +12:45.
- groupBy := "created_unix / 900 * 900"
- groupByName := "timestamp" // We need this extra case because mssql doesn't allow grouping by alias
- switch {
- case setting.Database.UseMySQL:
- groupBy = "created_unix DIV 900 * 900"
- case setting.Database.UseMSSQL:
- groupByName = groupBy
- }
-
- cond, err := activityQueryCondition(GetFeedsOptions{
- RequestedUser: user,
- RequestedTeam: team,
- Actor: doer,
- IncludePrivate: true, // don't filter by private, as we already filter by repo access
- IncludeDeleted: true,
- // * Heatmaps for individual users only include actions that the user themself did.
- // * For organizations actions by all users that were made in owned
- // repositories are counted.
- OnlyPerformedBy: !user.IsOrganization(),
- })
- if err != nil {
- return nil, err
- }
-
- return hdata, db.GetEngine(db.DefaultContext).
- Select(groupBy+" AS timestamp, count(user_id) as contributions").
- Table("action").
- Where(cond).
- And("created_unix > ?", timeutil.TimeStampNow()-31536000).
- GroupBy(groupByName).
- OrderBy("timestamp").
- Find(&hdata)
-}