From 6e07ee11a923258ec94f6ccba434a28c70b9e5ea Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Mon, 10 Mar 2025 23:59:49 -0700 Subject: [PATCH 1/2] heatmap --- models/activities/action.go | 5 ++- models/migrations/migrations.go | 1 + models/migrations/v1_24/v315.go | 56 +++++++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 models/migrations/v1_24/v315.go diff --git a/models/activities/action.go b/models/activities/action.go index c16c49c0acbf2..52cfdaa7c6f1a 100644 --- a/models/activities/action.go +++ b/models/activities/action.go @@ -172,7 +172,10 @@ func (a *Action) TableIndices() []*schemas.Index { cuIndex := schemas.NewIndex("c_u", schemas.IndexType) cuIndex.AddColumn("user_id", "is_deleted") - indices := []*schemas.Index{actUserIndex, repoIndex, cudIndex, cuIndex} + actUserUserIndex := schemas.NewIndex("au_u_c_u_d", schemas.IndexType) + actUserUserIndex.AddColumn("act_user_id", "created_unix", "user_id") + + indices := []*schemas.Index{actUserIndex, repoIndex, cudIndex, cuIndex, actUserUserIndex} return indices } diff --git a/models/migrations/migrations.go b/models/migrations/migrations.go index 5f79a873f14e7..1e2707ae5ca09 100644 --- a/models/migrations/migrations.go +++ b/models/migrations/migrations.go @@ -375,6 +375,7 @@ func prepareMigrationTasks() []*migration { newMigration(312, "Add DeleteBranchAfterMerge to AutoMerge", v1_24.AddDeleteBranchAfterMergeForAutoMerge), newMigration(313, "Move PinOrder from issue table to a new table issue_pin", v1_24.MovePinOrderToTableIssuePin), newMigration(314, "Update OwnerID as zero for repository level action tables", v1_24.UpdateOwnerIDOfRepoLevelActionsTables), + newMigration(315, "Add new index for action for heatmap", v1_24.AddNewIndexForUserDashboard), } return preparedMigrations } diff --git a/models/migrations/v1_24/v315.go b/models/migrations/v1_24/v315.go new file mode 100644 index 0000000000000..352ab7587c7f8 --- /dev/null +++ b/models/migrations/v1_24/v315.go @@ -0,0 +1,56 @@ +// Copyright 2025 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package v1_24 //nolint + +import ( + "code.gitea.io/gitea/modules/timeutil" + + "xorm.io/xorm" + "xorm.io/xorm/schemas" +) + +type improveActionTableIndicesAction struct { + ID int64 `xorm:"pk autoincr"` + UserID int64 `xorm:"INDEX"` // Receiver user id. + OpType int + ActUserID int64 // Action user id. + RepoID int64 + CommentID int64 `xorm:"INDEX"` + IsDeleted bool `xorm:"NOT NULL DEFAULT false"` + RefName string + IsPrivate bool `xorm:"NOT NULL DEFAULT false"` + Content string `xorm:"TEXT"` + CreatedUnix timeutil.TimeStamp `xorm:"created"` +} + +// TableName sets the name of this table +func (*improveActionTableIndicesAction) TableName() string { + return "action" +} + +// TableIndices implements xorm's TableIndices interface +func (a *improveActionTableIndicesAction) TableIndices() []*schemas.Index { + repoIndex := schemas.NewIndex("r_u_d", schemas.IndexType) + repoIndex.AddColumn("repo_id", "user_id", "is_deleted") + + actUserIndex := schemas.NewIndex("au_r_c_u_d", schemas.IndexType) + actUserIndex.AddColumn("act_user_id", "repo_id", "created_unix", "user_id", "is_deleted") + + cudIndex := schemas.NewIndex("c_u_d", schemas.IndexType) + cudIndex.AddColumn("created_unix", "user_id", "is_deleted") + + cuIndex := schemas.NewIndex("c_u", schemas.IndexType) + cuIndex.AddColumn("user_id", "is_deleted") + + actUserUserIndex := schemas.NewIndex("au_u_c_u_d", schemas.IndexType) + actUserUserIndex.AddColumn("act_user_id", "created_unix", "user_id") + + indices := []*schemas.Index{actUserIndex, repoIndex, cudIndex, cuIndex, actUserUserIndex} + + return indices +} + +func AddNewIndexForUserDashboard(x *xorm.Engine) error { + return x.Sync(new(improveActionTableIndicesAction)) +} From ce57b3b552bed2fec341b14a2646a27ef82c685b Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Fri, 14 Mar 2025 00:59:19 -0700 Subject: [PATCH 2/2] Follow the previous index name pattern --- models/activities/action.go | 2 +- models/migrations/v1_24/v315.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/models/activities/action.go b/models/activities/action.go index 52cfdaa7c6f1a..823af8fdcf738 100644 --- a/models/activities/action.go +++ b/models/activities/action.go @@ -172,7 +172,7 @@ func (a *Action) TableIndices() []*schemas.Index { cuIndex := schemas.NewIndex("c_u", schemas.IndexType) cuIndex.AddColumn("user_id", "is_deleted") - actUserUserIndex := schemas.NewIndex("au_u_c_u_d", schemas.IndexType) + actUserUserIndex := schemas.NewIndex("au_c_u", schemas.IndexType) actUserUserIndex.AddColumn("act_user_id", "created_unix", "user_id") indices := []*schemas.Index{actUserIndex, repoIndex, cudIndex, cuIndex, actUserUserIndex} diff --git a/models/migrations/v1_24/v315.go b/models/migrations/v1_24/v315.go index 352ab7587c7f8..3da5a4a0784f8 100644 --- a/models/migrations/v1_24/v315.go +++ b/models/migrations/v1_24/v315.go @@ -43,7 +43,7 @@ func (a *improveActionTableIndicesAction) TableIndices() []*schemas.Index { cuIndex := schemas.NewIndex("c_u", schemas.IndexType) cuIndex.AddColumn("user_id", "is_deleted") - actUserUserIndex := schemas.NewIndex("au_u_c_u_d", schemas.IndexType) + actUserUserIndex := schemas.NewIndex("au_c_u", schemas.IndexType) actUserUserIndex.AddColumn("act_user_id", "created_unix", "user_id") indices := []*schemas.Index{actUserIndex, repoIndex, cudIndex, cuIndex, actUserUserIndex}