diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2022-08-25 10:31:57 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-25 10:31:57 +0800 |
commit | 1d8543e7db58d7c4973758e47f005c4d8bd7d7a3 (patch) | |
tree | b60c99e2dfd69ccb998f8a0829d98d7cadcf0d6b /models/user_heatmap.go | |
parent | 4a4bfafa238bf48851f8c11fa3701bd42b912475 (diff) | |
download | gitea-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.go | 72 |
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) -} |