This is an automated email from the ASF dual-hosted git repository.

linkinstar pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-answer.git

commit 1fe3b7d8fcc700bb3f107cecd09a0c7f3a777c8d
Author: LinkinStars <[email protected]>
AuthorDate: Thu Nov 14 14:39:29 2024 +0800

    refactor(gomock): update gomock dependence and docs
---
 Makefile                                           | 11 ++++--
 README.md                                          | 12 +++----
 cmd/main.go                                        |  2 +-
 ...SE-golang-mock.txt => LICENSE-uber-go-mock.txt} |  0
 go.mod                                             |  2 +-
 go.sum                                             | 11 ++----
 internal/cli/build.go                              |  2 +-
 internal/service/mock/siteinfo_repo_mock.go        | 41 +++++++++++++---------
 .../siteinfo_common/siteinfo_service_test.go       |  2 +-
 ui/template/sort-btns.html                         | 20 +++++++++++
 10 files changed, 64 insertions(+), 39 deletions(-)

diff --git a/Makefile b/Makefile
index 0e398f93..a980a047 100644
--- a/Makefile
+++ b/Makefile
@@ -21,15 +21,20 @@ universal: generate
        @rm -f ${BIN}_amd64 ${BIN}_arm64
 
 generate:
-       @$(GO) get github.com/google/wire/cmd/[email protected]
-       @$(GO) get github.com/golang/mock/[email protected]
        @$(GO) get github.com/swaggo/swag/cmd/[email protected]
+       @$(GO) get github.com/google/wire/cmd/[email protected]
+       @$(GO) get go.uber.org/mock/mockgen@latest
        @$(GO) install github.com/swaggo/swag/cmd/[email protected]
        @$(GO) install github.com/google/wire/cmd/[email protected]
-       @$(GO) install github.com/golang/mock/[email protected]
+       @$(GO) install go.uber.org/mock/mockgen@latest
        @$(GO) generate ./...
        @$(GO) mod tidy
 
+check:
+       @mockgen -version
+       @swag -v
+       @wire flags
+
 test:
        @$(GO) test ./internal/repo/repo_test
 
diff --git a/README.md b/README.md
index 351b5f67..4eb1cc7c 100644
--- a/README.md
+++ b/README.md
@@ -40,20 +40,20 @@ You can also check out the [plugins 
here](https://answer.apache.org/plugins).
 
 ### Prerequisites
 
-- Golang >= 1.18
+- Golang >= 1.22
 - Node.js >= 16.17
 - pnpm >= 8
-- mockgen >= 1.6.0
-- wire >= 0.5.0
+- [mockgen](https://github.com/uber-go/mock?tab=readme-ov-file#installation) 
>= 1.6.0
+- [wire](https://github.com/google/wire/) >= 0.5.0
 
 ### Build
 
 ```bash
-# install wire and mockgen for building
+# Install wire and mockgen for building. You can run `make check` to check if 
they are installed.
 $ make generate
-# install frontend dependencies and build
+# Install frontend dependencies and build
 $ make ui
-# install backend dependencies and build
+# Install backend dependencies and build
 $ make build
 ```
 
diff --git a/cmd/main.go b/cmd/main.go
index 20cdf0f5..100c6261 100644
--- a/cmd/main.go
+++ b/cmd/main.go
@@ -49,7 +49,7 @@ var (
        // Time is the build time of the project
        Time = ""
        // GoVersion is the go version of the project
-       GoVersion = "1.19"
+       GoVersion = "1.22"
        // log level
        logLevel = os.Getenv("LOG_LEVEL")
        // log path
diff --git a/docs/release/licenses/LICENSE-golang-mock.txt 
b/docs/release/licenses/LICENSE-uber-go-mock.txt
similarity index 100%
rename from docs/release/licenses/LICENSE-golang-mock.txt
rename to docs/release/licenses/LICENSE-uber-go-mock.txt
diff --git a/go.mod b/go.mod
index 34ceb7ad..6d8e8891 100644
--- a/go.mod
+++ b/go.mod
@@ -32,7 +32,6 @@ require (
        github.com/go-playground/validator/v10 v10.22.1
        github.com/go-sql-driver/mysql v1.8.1
        github.com/goccy/go-json v0.10.3
-       github.com/golang/mock v1.6.0
        github.com/google/uuid v1.6.0
        github.com/google/wire v0.5.0
        github.com/grokify/html-strip-tags-go v0.1.0
@@ -57,6 +56,7 @@ require (
        github.com/swaggo/swag v1.16.3
        github.com/tidwall/gjson v1.17.3
        github.com/yuin/goldmark v1.7.4
+       go.uber.org/mock v0.5.0
        golang.org/x/crypto v0.27.0
        golang.org/x/image v0.20.0
        golang.org/x/net v0.29.0
diff --git a/go.sum b/go.sum
index 62b94f92..446401f5 100644
--- a/go.sum
+++ b/go.sum
@@ -227,8 +227,6 @@ github.com/golang/glog 
v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfU
 github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod 
h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod 
h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 github.com/golang/mock v1.1.1/go.mod 
h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=
-github.com/golang/mock v1.6.0/go.mod 
h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
 github.com/golang/protobuf v1.2.0/go.mod 
h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 github.com/golang/protobuf v1.3.1/go.mod 
h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 github.com/golang/protobuf v1.3.2/go.mod 
h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
@@ -640,7 +638,6 @@ github.com/xeipuuv/gojsonschema v1.2.0/go.mod 
h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQ
 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod 
h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
 github.com/yuin/goldmark v1.1.27/go.mod 
h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 github.com/yuin/goldmark v1.2.1/go.mod 
h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.3.5/go.mod 
h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
 github.com/yuin/goldmark v1.4.13/go.mod 
h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
 github.com/yuin/goldmark v1.7.4 h1:BDXOHExt+A7gwPCJgPIIq7ENvceR7we7rOS9TNoLZeg=
 github.com/yuin/goldmark v1.7.4/go.mod 
h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E=
@@ -657,6 +654,8 @@ go.uber.org/atomic v1.5.0/go.mod 
h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
 go.uber.org/atomic v1.6.0/go.mod 
h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
 go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
 go.uber.org/goleak v1.3.0/go.mod 
h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
+go.uber.org/mock v0.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU=
+go.uber.org/mock v0.5.0/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM=
 go.uber.org/multierr v1.1.0/go.mod 
h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
 go.uber.org/multierr v1.3.0/go.mod 
h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
 go.uber.org/multierr v1.5.0/go.mod 
h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU=
@@ -703,7 +702,6 @@ golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod 
h1:mXi4GBBbnImb6dmsKG
 golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod 
h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
 golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod 
h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
 golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0=
 golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
@@ -731,7 +729,6 @@ golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod 
h1:qpuaurCH72eLCgpAm/
 golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod 
h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
 golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod 
h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod 
h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod 
h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
 golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod 
h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
 golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
 golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo=
@@ -745,7 +742,6 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod 
h1:RxMgew5VJxzue5/jJ
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod 
h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod 
h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod 
h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod 
h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod 
h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
 golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
@@ -774,8 +770,6 @@ golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod 
h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20201126233918-771906719818/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210902050250-f475640dd07b/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -823,7 +817,6 @@ golang.org/x/tools 
v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapK
 golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod 
h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod 
h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod 
h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.1.1/go.mod 
h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
 golang.org/x/tools v0.1.12/go.mod 
h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
 golang.org/x/tools v0.25.0 h1:oFU9pkj/iJgs+0DT+VMHrx+oBKs/LJMV+Uvg78sl+fE=
 golang.org/x/tools v0.25.0/go.mod 
h1:/vtpO8WL1N9cQC3FN5zPqb//fRXskFHbLKk4OW1Q7rg=
diff --git a/internal/cli/build.go b/internal/cli/build.go
index 6af13c7a..bba075a9 100644
--- a/internal/cli/build.go
+++ b/internal/cli/build.go
@@ -62,7 +62,7 @@ func main() {
 `
        goModTpl = `module answer
 
-go 1.19
+go 1.22
 `
 )
 
diff --git a/internal/service/mock/siteinfo_repo_mock.go 
b/internal/service/mock/siteinfo_repo_mock.go
index abc1fe07..42be1067 100644
--- a/internal/service/mock/siteinfo_repo_mock.go
+++ b/internal/service/mock/siteinfo_repo_mock.go
@@ -19,6 +19,11 @@
 
 // Code generated by MockGen. DO NOT EDIT.
 // Source: ./siteinfo_service.go
+//
+// Generated by this command:
+//
+//     mockgen -source=./siteinfo_service.go 
-destination=../mock/siteinfo_repo_mock.go -package=mock
+//
 
 // Package mock is a generated GoMock package.
 package mock
@@ -29,13 +34,14 @@ import (
 
        entity "github.com/apache/incubator-answer/internal/entity"
        schema "github.com/apache/incubator-answer/internal/schema"
-       gomock "github.com/golang/mock/gomock"
+       gomock "go.uber.org/mock/gomock"
 )
 
 // MockSiteInfoRepo is a mock of SiteInfoRepo interface.
 type MockSiteInfoRepo struct {
        ctrl     *gomock.Controller
        recorder *MockSiteInfoRepoMockRecorder
+       isgomock struct{}
 }
 
 // MockSiteInfoRepoMockRecorder is the mock recorder for MockSiteInfoRepo.
@@ -66,7 +72,7 @@ func (m *MockSiteInfoRepo) GetByType(ctx context.Context, 
siteType string) (*ent
 }
 
 // GetByType indicates an expected call of GetByType.
-func (mr *MockSiteInfoRepoMockRecorder) GetByType(ctx, siteType interface{}) 
*gomock.Call {
+func (mr *MockSiteInfoRepoMockRecorder) GetByType(ctx, siteType any) 
*gomock.Call {
        mr.mock.ctrl.T.Helper()
        return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetByType", 
reflect.TypeOf((*MockSiteInfoRepo)(nil).GetByType), ctx, siteType)
 }
@@ -80,7 +86,7 @@ func (m *MockSiteInfoRepo) SaveByType(ctx context.Context, 
siteType string, data
 }
 
 // SaveByType indicates an expected call of SaveByType.
-func (mr *MockSiteInfoRepoMockRecorder) SaveByType(ctx, siteType, data 
interface{}) *gomock.Call {
+func (mr *MockSiteInfoRepoMockRecorder) SaveByType(ctx, siteType, data any) 
*gomock.Call {
        mr.mock.ctrl.T.Helper()
        return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SaveByType", 
reflect.TypeOf((*MockSiteInfoRepo)(nil).SaveByType), ctx, siteType, data)
 }
@@ -89,6 +95,7 @@ func (mr *MockSiteInfoRepoMockRecorder) SaveByType(ctx, 
siteType, data interface
 type MockSiteInfoCommonService struct {
        ctrl     *gomock.Controller
        recorder *MockSiteInfoCommonServiceMockRecorder
+       isgomock struct{}
 }
 
 // MockSiteInfoCommonServiceMockRecorder is the mock recorder for 
MockSiteInfoCommonService.
@@ -117,7 +124,7 @@ func (m *MockSiteInfoCommonService) FormatAvatar(ctx 
context.Context, originalAv
 }
 
 // FormatAvatar indicates an expected call of FormatAvatar.
-func (mr *MockSiteInfoCommonServiceMockRecorder) FormatAvatar(ctx, 
originalAvatarData, email, userStatus interface{}) *gomock.Call {
+func (mr *MockSiteInfoCommonServiceMockRecorder) FormatAvatar(ctx, 
originalAvatarData, email, userStatus any) *gomock.Call {
        mr.mock.ctrl.T.Helper()
        return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FormatAvatar", 
reflect.TypeOf((*MockSiteInfoCommonService)(nil).FormatAvatar), ctx, 
originalAvatarData, email, userStatus)
 }
@@ -131,7 +138,7 @@ func (m *MockSiteInfoCommonService) FormatListAvatar(ctx 
context.Context, userLi
 }
 
 // FormatListAvatar indicates an expected call of FormatListAvatar.
-func (mr *MockSiteInfoCommonServiceMockRecorder) FormatListAvatar(ctx, 
userList interface{}) *gomock.Call {
+func (mr *MockSiteInfoCommonServiceMockRecorder) FormatListAvatar(ctx, 
userList any) *gomock.Call {
        mr.mock.ctrl.T.Helper()
        return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, 
"FormatListAvatar", 
reflect.TypeOf((*MockSiteInfoCommonService)(nil).FormatListAvatar), ctx, 
userList)
 }
@@ -146,7 +153,7 @@ func (m *MockSiteInfoCommonService) GetSiteBranding(ctx 
context.Context) (*schem
 }
 
 // GetSiteBranding indicates an expected call of GetSiteBranding.
-func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteBranding(ctx 
interface{}) *gomock.Call {
+func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteBranding(ctx any) 
*gomock.Call {
        mr.mock.ctrl.T.Helper()
        return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, 
"GetSiteBranding", 
reflect.TypeOf((*MockSiteInfoCommonService)(nil).GetSiteBranding), ctx)
 }
@@ -161,7 +168,7 @@ func (m *MockSiteInfoCommonService) 
GetSiteCustomCssHTML(ctx context.Context) (*
 }
 
 // GetSiteCustomCssHTML indicates an expected call of GetSiteCustomCssHTML.
-func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteCustomCssHTML(ctx 
interface{}) *gomock.Call {
+func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteCustomCssHTML(ctx any) 
*gomock.Call {
        mr.mock.ctrl.T.Helper()
        return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, 
"GetSiteCustomCssHTML", 
reflect.TypeOf((*MockSiteInfoCommonService)(nil).GetSiteCustomCssHTML), ctx)
 }
@@ -176,13 +183,13 @@ func (m *MockSiteInfoCommonService) GetSiteGeneral(ctx 
context.Context) (*schema
 }
 
 // GetSiteGeneral indicates an expected call of GetSiteGeneral.
-func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteGeneral(ctx 
interface{}) *gomock.Call {
+func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteGeneral(ctx any) 
*gomock.Call {
        mr.mock.ctrl.T.Helper()
        return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSiteGeneral", 
reflect.TypeOf((*MockSiteInfoCommonService)(nil).GetSiteGeneral), ctx)
 }
 
 // GetSiteInfoByType mocks base method.
-func (m *MockSiteInfoCommonService) GetSiteInfoByType(ctx context.Context, 
siteType string, resp interface{}) error {
+func (m *MockSiteInfoCommonService) GetSiteInfoByType(ctx context.Context, 
siteType string, resp any) error {
        m.ctrl.T.Helper()
        ret := m.ctrl.Call(m, "GetSiteInfoByType", ctx, siteType, resp)
        ret0, _ := ret[0].(error)
@@ -190,7 +197,7 @@ func (m *MockSiteInfoCommonService) GetSiteInfoByType(ctx 
context.Context, siteT
 }
 
 // GetSiteInfoByType indicates an expected call of GetSiteInfoByType.
-func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteInfoByType(ctx, 
siteType, resp interface{}) *gomock.Call {
+func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteInfoByType(ctx, 
siteType, resp any) *gomock.Call {
        mr.mock.ctrl.T.Helper()
        return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, 
"GetSiteInfoByType", 
reflect.TypeOf((*MockSiteInfoCommonService)(nil).GetSiteInfoByType), ctx, 
siteType, resp)
 }
@@ -205,7 +212,7 @@ func (m *MockSiteInfoCommonService) GetSiteInterface(ctx 
context.Context) (*sche
 }
 
 // GetSiteInterface indicates an expected call of GetSiteInterface.
-func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteInterface(ctx 
interface{}) *gomock.Call {
+func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteInterface(ctx any) 
*gomock.Call {
        mr.mock.ctrl.T.Helper()
        return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, 
"GetSiteInterface", 
reflect.TypeOf((*MockSiteInfoCommonService)(nil).GetSiteInterface), ctx)
 }
@@ -220,7 +227,7 @@ func (m *MockSiteInfoCommonService) GetSiteLegal(ctx 
context.Context) (*schema.S
 }
 
 // GetSiteLegal indicates an expected call of GetSiteLegal.
-func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteLegal(ctx interface{}) 
*gomock.Call {
+func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteLegal(ctx any) 
*gomock.Call {
        mr.mock.ctrl.T.Helper()
        return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSiteLegal", 
reflect.TypeOf((*MockSiteInfoCommonService)(nil).GetSiteLegal), ctx)
 }
@@ -235,7 +242,7 @@ func (m *MockSiteInfoCommonService) GetSiteLogin(ctx 
context.Context) (*schema.S
 }
 
 // GetSiteLogin indicates an expected call of GetSiteLogin.
-func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteLogin(ctx interface{}) 
*gomock.Call {
+func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteLogin(ctx any) 
*gomock.Call {
        mr.mock.ctrl.T.Helper()
        return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSiteLogin", 
reflect.TypeOf((*MockSiteInfoCommonService)(nil).GetSiteLogin), ctx)
 }
@@ -250,7 +257,7 @@ func (m *MockSiteInfoCommonService) GetSiteSeo(ctx 
context.Context) (*schema.Sit
 }
 
 // GetSiteSeo indicates an expected call of GetSiteSeo.
-func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteSeo(ctx interface{}) 
*gomock.Call {
+func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteSeo(ctx any) 
*gomock.Call {
        mr.mock.ctrl.T.Helper()
        return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSiteSeo", 
reflect.TypeOf((*MockSiteInfoCommonService)(nil).GetSiteSeo), ctx)
 }
@@ -265,7 +272,7 @@ func (m *MockSiteInfoCommonService) GetSiteTheme(ctx 
context.Context) (*schema.S
 }
 
 // GetSiteTheme indicates an expected call of GetSiteTheme.
-func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteTheme(ctx interface{}) 
*gomock.Call {
+func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteTheme(ctx any) 
*gomock.Call {
        mr.mock.ctrl.T.Helper()
        return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSiteTheme", 
reflect.TypeOf((*MockSiteInfoCommonService)(nil).GetSiteTheme), ctx)
 }
@@ -280,7 +287,7 @@ func (m *MockSiteInfoCommonService) GetSiteUsers(ctx 
context.Context) (*schema.S
 }
 
 // GetSiteUsers indicates an expected call of GetSiteUsers.
-func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteUsers(ctx interface{}) 
*gomock.Call {
+func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteUsers(ctx any) 
*gomock.Call {
        mr.mock.ctrl.T.Helper()
        return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSiteUsers", 
reflect.TypeOf((*MockSiteInfoCommonService)(nil).GetSiteUsers), ctx)
 }
@@ -295,7 +302,7 @@ func (m *MockSiteInfoCommonService) GetSiteWrite(ctx 
context.Context) (*schema.S
 }
 
 // GetSiteWrite indicates an expected call of GetSiteWrite.
-func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteWrite(ctx interface{}) 
*gomock.Call {
+func (mr *MockSiteInfoCommonServiceMockRecorder) GetSiteWrite(ctx any) 
*gomock.Call {
        mr.mock.ctrl.T.Helper()
        return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSiteWrite", 
reflect.TypeOf((*MockSiteInfoCommonService)(nil).GetSiteWrite), ctx)
 }
diff --git a/internal/service/siteinfo_common/siteinfo_service_test.go 
b/internal/service/siteinfo_common/siteinfo_service_test.go
index bda2f368..387e1e2f 100644
--- a/internal/service/siteinfo_common/siteinfo_service_test.go
+++ b/internal/service/siteinfo_common/siteinfo_service_test.go
@@ -26,8 +26,8 @@ import (
        "github.com/apache/incubator-answer/internal/base/constant"
        "github.com/apache/incubator-answer/internal/entity"
        "github.com/apache/incubator-answer/internal/service/mock"
-       "github.com/golang/mock/gomock"
        "github.com/stretchr/testify/assert"
+       "go.uber.org/mock/gomock"
 )
 
 var (
diff --git a/ui/template/sort-btns.html b/ui/template/sort-btns.html
index 7da3485c..3ea41ec2 100644
--- a/ui/template/sort-btns.html
+++ b/ui/template/sort-btns.html
@@ -1,3 +1,23 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
 {{define "sort-btns"}}
 <div role="group" class="btn-group btn-group-sm">
   <a role="button" tabindex="0" href="?order=newest" class="text-capitalize 
fit-content btn active btn-outline-secondary">

Reply via email to