Skip to content

Commit 7fbdb60

Browse files
authored
Start to migrate from util.OptionalBool to optional.Option[bool] (#29329)
just create transition helper and migrate two structs
1 parent b748d62 commit 7fbdb60

24 files changed

+84
-64
lines changed

cmd/admin_user_create.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ import (
1010
auth_model "code.gitea.io/gitea/models/auth"
1111
user_model "code.gitea.io/gitea/models/user"
1212
pwd "code.gitea.io/gitea/modules/auth/password"
13+
"code.gitea.io/gitea/modules/optional"
1314
"code.gitea.io/gitea/modules/setting"
14-
"code.gitea.io/gitea/modules/util"
1515

1616
"github.com/urfave/cli/v2"
1717
)
@@ -123,10 +123,10 @@ func runCreateUser(c *cli.Context) error {
123123
changePassword = c.Bool("must-change-password")
124124
}
125125

126-
restricted := util.OptionalBoolNone
126+
restricted := optional.None[bool]()
127127

128128
if c.IsSet("restricted") {
129-
restricted = util.OptionalBoolOf(c.Bool("restricted"))
129+
restricted = optional.Some(c.Bool("restricted"))
130130
}
131131

132132
// default user visibility in app.ini
@@ -142,7 +142,7 @@ func runCreateUser(c *cli.Context) error {
142142
}
143143

144144
overwriteDefault := &user_model.CreateUserOverwriteOptions{
145-
IsActive: util.OptionalBoolTrue,
145+
IsActive: optional.Some(true),
146146
IsRestricted: restricted,
147147
}
148148

models/git/branch_list.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
"code.gitea.io/gitea/models/db"
1010
user_model "code.gitea.io/gitea/models/user"
1111
"code.gitea.io/gitea/modules/container"
12-
"code.gitea.io/gitea/modules/util"
12+
"code.gitea.io/gitea/modules/optional"
1313

1414
"xorm.io/builder"
1515
)
@@ -67,7 +67,7 @@ type FindBranchOptions struct {
6767
db.ListOptions
6868
RepoID int64
6969
ExcludeBranchNames []string
70-
IsDeletedBranch util.OptionalBool
70+
IsDeletedBranch optional.Option[bool]
7171
OrderBy string
7272
Keyword string
7373
}
@@ -81,8 +81,8 @@ func (opts FindBranchOptions) ToConds() builder.Cond {
8181
if len(opts.ExcludeBranchNames) > 0 {
8282
cond = cond.And(builder.NotIn("name", opts.ExcludeBranchNames))
8383
}
84-
if !opts.IsDeletedBranch.IsNone() {
85-
cond = cond.And(builder.Eq{"is_deleted": opts.IsDeletedBranch.IsTrue()})
84+
if opts.IsDeletedBranch.Has() {
85+
cond = cond.And(builder.Eq{"is_deleted": opts.IsDeletedBranch.Value()})
8686
}
8787
if opts.Keyword != "" {
8888
cond = cond.And(builder.Like{"name", opts.Keyword})
@@ -92,7 +92,7 @@ func (opts FindBranchOptions) ToConds() builder.Cond {
9292

9393
func (opts FindBranchOptions) ToOrders() string {
9494
orderBy := opts.OrderBy
95-
if !opts.IsDeletedBranch.IsFalse() { // if deleted branch included, put them at the end
95+
if opts.IsDeletedBranch.ValueOrDefault(true) { // if deleted branch included, put them at the end
9696
if orderBy != "" {
9797
orderBy += ", "
9898
}

models/git/branch_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313
repo_model "code.gitea.io/gitea/models/repo"
1414
"code.gitea.io/gitea/models/unittest"
1515
"code.gitea.io/gitea/modules/git"
16-
"code.gitea.io/gitea/modules/util"
16+
"code.gitea.io/gitea/modules/optional"
1717

1818
"github.com/stretchr/testify/assert"
1919
)
@@ -50,7 +50,7 @@ func TestGetDeletedBranches(t *testing.T) {
5050
branches, err := db.Find[git_model.Branch](db.DefaultContext, git_model.FindBranchOptions{
5151
ListOptions: db.ListOptionsAll,
5252
RepoID: repo.ID,
53-
IsDeletedBranch: util.OptionalBoolTrue,
53+
IsDeletedBranch: optional.Some(true),
5454
})
5555
assert.NoError(t, err)
5656
assert.Len(t, branches, 2)

models/git/protected_branch_list.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
"sort"
99

1010
"code.gitea.io/gitea/models/db"
11-
"code.gitea.io/gitea/modules/util"
11+
"code.gitea.io/gitea/modules/optional"
1212

1313
"github.com/gobwas/glob"
1414
)
@@ -56,7 +56,7 @@ func FindAllMatchedBranches(ctx context.Context, repoID int64, ruleName string)
5656
Page: page,
5757
},
5858
RepoID: repoID,
59-
IsDeletedBranch: util.OptionalBoolFalse,
59+
IsDeletedBranch: optional.Some(false),
6060
})
6161
if err != nil {
6262
return nil, err

models/user/user.go

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
"code.gitea.io/gitea/modules/container"
2626
"code.gitea.io/gitea/modules/git"
2727
"code.gitea.io/gitea/modules/log"
28+
"code.gitea.io/gitea/modules/optional"
2829
"code.gitea.io/gitea/modules/setting"
2930
"code.gitea.io/gitea/modules/structs"
3031
"code.gitea.io/gitea/modules/timeutil"
@@ -573,14 +574,14 @@ func IsUsableUsername(name string) error {
573574

574575
// CreateUserOverwriteOptions are an optional options who overwrite system defaults on user creation
575576
type CreateUserOverwriteOptions struct {
576-
KeepEmailPrivate util.OptionalBool
577+
KeepEmailPrivate optional.Option[bool]
577578
Visibility *structs.VisibleType
578-
AllowCreateOrganization util.OptionalBool
579+
AllowCreateOrganization optional.Option[bool]
579580
EmailNotificationsPreference *string
580581
MaxRepoCreation *int
581582
Theme *string
582-
IsRestricted util.OptionalBool
583-
IsActive util.OptionalBool
583+
IsRestricted optional.Option[bool]
584+
IsActive optional.Option[bool]
584585
}
585586

586587
// CreateUser creates record of a new user.
@@ -607,14 +608,14 @@ func CreateUser(ctx context.Context, u *User, overwriteDefault ...*CreateUserOve
607608
// overwrite defaults if set
608609
if len(overwriteDefault) != 0 && overwriteDefault[0] != nil {
609610
overwrite := overwriteDefault[0]
610-
if !overwrite.KeepEmailPrivate.IsNone() {
611-
u.KeepEmailPrivate = overwrite.KeepEmailPrivate.IsTrue()
611+
if overwrite.KeepEmailPrivate.Has() {
612+
u.KeepEmailPrivate = overwrite.KeepEmailPrivate.Value()
612613
}
613614
if overwrite.Visibility != nil {
614615
u.Visibility = *overwrite.Visibility
615616
}
616-
if !overwrite.AllowCreateOrganization.IsNone() {
617-
u.AllowCreateOrganization = overwrite.AllowCreateOrganization.IsTrue()
617+
if overwrite.AllowCreateOrganization.Has() {
618+
u.AllowCreateOrganization = overwrite.AllowCreateOrganization.Value()
618619
}
619620
if overwrite.EmailNotificationsPreference != nil {
620621
u.EmailNotificationsPreference = *overwrite.EmailNotificationsPreference
@@ -625,11 +626,11 @@ func CreateUser(ctx context.Context, u *User, overwriteDefault ...*CreateUserOve
625626
if overwrite.Theme != nil {
626627
u.Theme = *overwrite.Theme
627628
}
628-
if !overwrite.IsRestricted.IsNone() {
629-
u.IsRestricted = overwrite.IsRestricted.IsTrue()
629+
if overwrite.IsRestricted.Has() {
630+
u.IsRestricted = overwrite.IsRestricted.Value()
630631
}
631-
if !overwrite.IsActive.IsNone() {
632-
u.IsActive = overwrite.IsActive.IsTrue()
632+
if overwrite.IsActive.Has() {
633+
u.IsActive = overwrite.IsActive.Value()
633634
}
634635
}
635636

modules/context/repo.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"code.gitea.io/gitea/modules/gitrepo"
2828
code_indexer "code.gitea.io/gitea/modules/indexer/code"
2929
"code.gitea.io/gitea/modules/log"
30+
"code.gitea.io/gitea/modules/optional"
3031
repo_module "code.gitea.io/gitea/modules/repository"
3132
"code.gitea.io/gitea/modules/setting"
3233
"code.gitea.io/gitea/modules/util"
@@ -671,7 +672,7 @@ func RepoAssignment(ctx *Context) context.CancelFunc {
671672

672673
branchOpts := git_model.FindBranchOptions{
673674
RepoID: ctx.Repo.Repository.ID,
674-
IsDeletedBranch: util.OptionalBoolFalse,
675+
IsDeletedBranch: optional.Some(false),
675676
ListOptions: db.ListOptionsAll,
676677
}
677678
branchesTotal, err := db.Count[git_model.Branch](ctx, branchOpts)

modules/optional/option_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ package optional
66
import (
77
"testing"
88

9-
"code.gitea.io/gitea/modules/util"
10-
119
"github.com/stretchr/testify/assert"
1210
)
1311

@@ -30,7 +28,8 @@ func TestOption(t *testing.T) {
3028
var ptr *int
3129
assert.False(t, FromPtr(ptr).Has())
3230

33-
opt1 := FromPtr(util.ToPointer(1))
31+
int1 := 1
32+
opt1 := FromPtr(&int1)
3433
assert.True(t, opt1.Has())
3534
assert.Equal(t, int(1), opt1.Value())
3635

modules/util/util.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import (
1111
"strconv"
1212
"strings"
1313

14+
"code.gitea.io/gitea/modules/optional"
15+
1416
"golang.org/x/text/cases"
1517
"golang.org/x/text/language"
1618
)
@@ -42,6 +44,22 @@ func (o OptionalBool) IsNone() bool {
4244
return o == OptionalBoolNone
4345
}
4446

47+
// ToGeneric converts OptionalBool to optional.Option[bool]
48+
func (o OptionalBool) ToGeneric() optional.Option[bool] {
49+
if o.IsNone() {
50+
return optional.None[bool]()
51+
}
52+
return optional.Some[bool](o.IsTrue())
53+
}
54+
55+
// OptionalBoolFromGeneric converts optional.Option[bool] to OptionalBool
56+
func OptionalBoolFromGeneric(o optional.Option[bool]) OptionalBool {
57+
if o.Has() {
58+
return OptionalBoolOf(o.Value())
59+
}
60+
return OptionalBoolNone
61+
}
62+
4563
// OptionalBoolOf get the corresponding OptionalBool of a bool
4664
func OptionalBoolOf(b bool) OptionalBool {
4765
if b {

routers/api/v1/admin/user.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import (
2121
"code.gitea.io/gitea/modules/setting"
2222
api "code.gitea.io/gitea/modules/structs"
2323
"code.gitea.io/gitea/modules/timeutil"
24-
"code.gitea.io/gitea/modules/util"
2524
"code.gitea.io/gitea/modules/web"
2625
"code.gitea.io/gitea/routers/api/v1/user"
2726
"code.gitea.io/gitea/routers/api/v1/utils"
@@ -117,11 +116,8 @@ func CreateUser(ctx *context.APIContext) {
117116
}
118117

119118
overwriteDefault := &user_model.CreateUserOverwriteOptions{
120-
IsActive: util.OptionalBoolTrue,
121-
}
122-
123-
if form.Restricted != nil {
124-
overwriteDefault.IsRestricted = util.OptionalBoolOf(*form.Restricted)
119+
IsActive: optional.Some(true),
120+
IsRestricted: optional.FromPtr(form.Restricted),
125121
}
126122

127123
if form.Visibility != "" {

routers/api/v1/repo/branch.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ import (
1717
"code.gitea.io/gitea/modules/context"
1818
"code.gitea.io/gitea/modules/git"
1919
"code.gitea.io/gitea/modules/gitrepo"
20+
"code.gitea.io/gitea/modules/optional"
2021
repo_module "code.gitea.io/gitea/modules/repository"
2122
api "code.gitea.io/gitea/modules/structs"
22-
"code.gitea.io/gitea/modules/util"
2323
"code.gitea.io/gitea/modules/web"
2424
"code.gitea.io/gitea/routers/api/v1/utils"
2525
"code.gitea.io/gitea/services/convert"
@@ -141,7 +141,7 @@ func DeleteBranch(ctx *context.APIContext) {
141141
// check whether branches of this repository has been synced
142142
totalNumOfBranches, err := db.Count[git_model.Branch](ctx, git_model.FindBranchOptions{
143143
RepoID: ctx.Repo.Repository.ID,
144-
IsDeletedBranch: util.OptionalBoolFalse,
144+
IsDeletedBranch: optional.Some(false),
145145
})
146146
if err != nil {
147147
ctx.Error(http.StatusInternalServerError, "CountBranches", err)
@@ -340,7 +340,7 @@ func ListBranches(ctx *context.APIContext) {
340340
branchOpts := git_model.FindBranchOptions{
341341
ListOptions: listOptions,
342342
RepoID: ctx.Repo.Repository.ID,
343-
IsDeletedBranch: util.OptionalBoolFalse,
343+
IsDeletedBranch: optional.Some(false),
344344
}
345345
var err error
346346
totalNumOfBranches, err = db.Count[git_model.Branch](ctx, branchOpts)

routers/install/install.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ import (
2525
"code.gitea.io/gitea/modules/generate"
2626
"code.gitea.io/gitea/modules/graceful"
2727
"code.gitea.io/gitea/modules/log"
28+
"code.gitea.io/gitea/modules/optional"
2829
"code.gitea.io/gitea/modules/setting"
2930
"code.gitea.io/gitea/modules/templates"
3031
"code.gitea.io/gitea/modules/timeutil"
3132
"code.gitea.io/gitea/modules/translation"
3233
"code.gitea.io/gitea/modules/user"
33-
"code.gitea.io/gitea/modules/util"
3434
"code.gitea.io/gitea/modules/web"
3535
"code.gitea.io/gitea/modules/web/middleware"
3636
"code.gitea.io/gitea/routers/common"
@@ -533,8 +533,8 @@ func SubmitInstall(ctx *context.Context) {
533533
IsAdmin: true,
534534
}
535535
overwriteDefault := &user_model.CreateUserOverwriteOptions{
536-
IsRestricted: util.OptionalBoolFalse,
537-
IsActive: util.OptionalBoolTrue,
536+
IsRestricted: optional.Some(false),
537+
IsActive: optional.Some(true),
538538
}
539539

540540
if err = user_model.CreateUser(ctx, u, overwriteDefault); err != nil {

routers/web/admin/users.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ func NewUserPost(ctx *context.Context) {
140140
}
141141

142142
overwriteDefault := &user_model.CreateUserOverwriteOptions{
143-
IsActive: util.OptionalBoolTrue,
143+
IsActive: optional.Some(true),
144144
Visibility: &form.Visibility,
145145
}
146146

routers/web/auth/oauth.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -979,7 +979,7 @@ func SignInOAuthCallback(ctx *context.Context) {
979979
}
980980

981981
overwriteDefault := &user_model.CreateUserOverwriteOptions{
982-
IsActive: util.OptionalBoolOf(!setting.OAuth2Client.RegisterEmailConfirm && !setting.Service.RegisterManualConfirm),
982+
IsActive: optional.Some(!setting.OAuth2Client.RegisterEmailConfirm && !setting.Service.RegisterManualConfirm),
983983
}
984984

985985
source := authSource.Cfg.(*oauth2.Source)

routers/web/repo/compare.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import (
3131
"code.gitea.io/gitea/modules/gitrepo"
3232
"code.gitea.io/gitea/modules/log"
3333
"code.gitea.io/gitea/modules/markup"
34+
"code.gitea.io/gitea/modules/optional"
3435
"code.gitea.io/gitea/modules/setting"
3536
api "code.gitea.io/gitea/modules/structs"
3637
"code.gitea.io/gitea/modules/typesniffer"
@@ -700,7 +701,7 @@ func getBranchesAndTagsForRepo(ctx gocontext.Context, repo *repo_model.Repositor
700701
ListOptions: db.ListOptions{
701702
ListAll: true,
702703
},
703-
IsDeletedBranch: util.OptionalBoolFalse,
704+
IsDeletedBranch: optional.Some(false),
704705
})
705706
if err != nil {
706707
return nil, nil, err
@@ -757,7 +758,7 @@ func CompareDiff(ctx *context.Context) {
757758
ListOptions: db.ListOptions{
758759
ListAll: true,
759760
},
760-
IsDeletedBranch: util.OptionalBoolFalse,
761+
IsDeletedBranch: optional.Some(false),
761762
})
762763
if err != nil {
763764
ctx.ServerError("GetBranches", err)

routers/web/repo/pull.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import (
3232
"code.gitea.io/gitea/modules/gitrepo"
3333
issue_template "code.gitea.io/gitea/modules/issue/template"
3434
"code.gitea.io/gitea/modules/log"
35+
"code.gitea.io/gitea/modules/optional"
3536
"code.gitea.io/gitea/modules/setting"
3637
"code.gitea.io/gitea/modules/structs"
3738
"code.gitea.io/gitea/modules/upload"
@@ -186,7 +187,7 @@ func getForkRepository(ctx *context.Context) *repo_model.Repository {
186187
ListOptions: db.ListOptions{
187188
ListAll: true,
188189
},
189-
IsDeletedBranch: util.OptionalBoolFalse,
190+
IsDeletedBranch: optional.Some(false),
190191
// Add it as the first option
191192
ExcludeBranchNames: []string{ctx.Repo.Repository.DefaultBranch},
192193
})

routers/web/repo/repo.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"code.gitea.io/gitea/modules/context"
2525
"code.gitea.io/gitea/modules/git"
2626
"code.gitea.io/gitea/modules/log"
27+
"code.gitea.io/gitea/modules/optional"
2728
repo_module "code.gitea.io/gitea/modules/repository"
2829
"code.gitea.io/gitea/modules/setting"
2930
"code.gitea.io/gitea/modules/storage"
@@ -685,7 +686,7 @@ type branchTagSearchResponse struct {
685686
func GetBranchesList(ctx *context.Context) {
686687
branchOpts := git_model.FindBranchOptions{
687688
RepoID: ctx.Repo.Repository.ID,
688-
IsDeletedBranch: util.OptionalBoolFalse,
689+
IsDeletedBranch: optional.Some(false),
689690
ListOptions: db.ListOptions{
690691
ListAll: true,
691692
},
@@ -720,7 +721,7 @@ func GetTagList(ctx *context.Context) {
720721
func PrepareBranchList(ctx *context.Context) {
721722
branchOpts := git_model.FindBranchOptions{
722723
RepoID: ctx.Repo.Repository.ID,
723-
IsDeletedBranch: util.OptionalBoolFalse,
724+
IsDeletedBranch: optional.Some(false),
724725
ListOptions: db.ListOptions{
725726
ListAll: true,
726727
},

0 commit comments

Comments
 (0)