Skip to content

Commit a3f05d0

Browse files
authored
remove util.OptionalBool and related functions (#29513)
and migrate affected code _last refactoring bits to replace **util.OptionalBool** with **optional.Option[bool]**_
1 parent 3f081d4 commit a3f05d0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+308
-355
lines changed

models/actions/runner.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
repo_model "code.gitea.io/gitea/models/repo"
1414
"code.gitea.io/gitea/models/shared/types"
1515
user_model "code.gitea.io/gitea/models/user"
16+
"code.gitea.io/gitea/modules/optional"
1617
"code.gitea.io/gitea/modules/timeutil"
1718
"code.gitea.io/gitea/modules/translation"
1819
"code.gitea.io/gitea/modules/util"
@@ -159,7 +160,7 @@ type FindRunnerOptions struct {
159160
OwnerID int64
160161
Sort string
161162
Filter string
162-
IsOnline util.OptionalBool
163+
IsOnline optional.Option[bool]
163164
WithAvailable bool // not only runners belong to, but also runners can be used
164165
}
165166

@@ -186,10 +187,12 @@ func (opts FindRunnerOptions) ToConds() builder.Cond {
186187
cond = cond.And(builder.Like{"name", opts.Filter})
187188
}
188189

189-
if opts.IsOnline.IsTrue() {
190-
cond = cond.And(builder.Gt{"last_online": time.Now().Add(-RunnerOfflineTime).Unix()})
191-
} else if opts.IsOnline.IsFalse() {
192-
cond = cond.And(builder.Lte{"last_online": time.Now().Add(-RunnerOfflineTime).Unix()})
190+
if opts.IsOnline.Has() {
191+
if opts.IsOnline.Value() {
192+
cond = cond.And(builder.Gt{"last_online": time.Now().Add(-RunnerOfflineTime).Unix()})
193+
} else {
194+
cond = cond.And(builder.Lte{"last_online": time.Now().Add(-RunnerOfflineTime).Unix()})
195+
}
193196
}
194197
return cond
195198
}

models/auth/source.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111

1212
"code.gitea.io/gitea/models/db"
1313
"code.gitea.io/gitea/modules/log"
14+
"code.gitea.io/gitea/modules/optional"
1415
"code.gitea.io/gitea/modules/timeutil"
1516
"code.gitea.io/gitea/modules/util"
1617

@@ -243,14 +244,14 @@ func CreateSource(ctx context.Context, source *Source) error {
243244

244245
type FindSourcesOptions struct {
245246
db.ListOptions
246-
IsActive util.OptionalBool
247+
IsActive optional.Option[bool]
247248
LoginType Type
248249
}
249250

250251
func (opts FindSourcesOptions) ToConds() builder.Cond {
251252
conds := builder.NewCond()
252-
if !opts.IsActive.IsNone() {
253-
conds = conds.And(builder.Eq{"is_active": opts.IsActive.IsTrue()})
253+
if opts.IsActive.Has() {
254+
conds = conds.And(builder.Eq{"is_active": opts.IsActive.Value()})
254255
}
255256
if opts.LoginType != NoType {
256257
conds = conds.And(builder.Eq{"`type`": opts.LoginType})
@@ -262,7 +263,7 @@ func (opts FindSourcesOptions) ToConds() builder.Cond {
262263
// source of type LoginSSPI
263264
func IsSSPIEnabled(ctx context.Context) bool {
264265
exist, err := db.Exist[Source](ctx, FindSourcesOptions{
265-
IsActive: util.OptionalBoolTrue,
266+
IsActive: optional.Some(true),
266267
LoginType: SSPI,
267268
}.ToConds())
268269
if err != nil {

models/issues/comment.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"code.gitea.io/gitea/modules/gitrepo"
2323
"code.gitea.io/gitea/modules/json"
2424
"code.gitea.io/gitea/modules/log"
25+
"code.gitea.io/gitea/modules/optional"
2526
"code.gitea.io/gitea/modules/references"
2627
"code.gitea.io/gitea/modules/structs"
2728
"code.gitea.io/gitea/modules/timeutil"
@@ -1036,8 +1037,8 @@ type FindCommentsOptions struct {
10361037
TreePath string
10371038
Type CommentType
10381039
IssueIDs []int64
1039-
Invalidated util.OptionalBool
1040-
IsPull util.OptionalBool
1040+
Invalidated optional.Option[bool]
1041+
IsPull optional.Option[bool]
10411042
}
10421043

10431044
// ToConds implements FindOptions interface
@@ -1069,11 +1070,11 @@ func (opts FindCommentsOptions) ToConds() builder.Cond {
10691070
if len(opts.TreePath) > 0 {
10701071
cond = cond.And(builder.Eq{"comment.tree_path": opts.TreePath})
10711072
}
1072-
if !opts.Invalidated.IsNone() {
1073-
cond = cond.And(builder.Eq{"comment.invalidated": opts.Invalidated.IsTrue()})
1073+
if opts.Invalidated.Has() {
1074+
cond = cond.And(builder.Eq{"comment.invalidated": opts.Invalidated.Value()})
10741075
}
1075-
if opts.IsPull != util.OptionalBoolNone {
1076-
cond = cond.And(builder.Eq{"issue.is_pull": opts.IsPull.IsTrue()})
1076+
if opts.IsPull.Has() {
1077+
cond = cond.And(builder.Eq{"issue.is_pull": opts.IsPull.Value()})
10771078
}
10781079
return cond
10791080
}
@@ -1082,7 +1083,7 @@ func (opts FindCommentsOptions) ToConds() builder.Cond {
10821083
func FindComments(ctx context.Context, opts *FindCommentsOptions) (CommentList, error) {
10831084
comments := make([]*Comment, 0, 10)
10841085
sess := db.GetEngine(ctx).Where(opts.ToConds())
1085-
if opts.RepoID > 0 || opts.IsPull != util.OptionalBoolNone {
1086+
if opts.RepoID > 0 || opts.IsPull.Has() {
10861087
sess.Join("INNER", "issue", "issue.id = comment.issue_id")
10871088
}
10881089

models/issues/issue_search.go

Lines changed: 11 additions & 14 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/unit"
1515
user_model "code.gitea.io/gitea/models/user"
16-
"code.gitea.io/gitea/modules/util"
16+
"code.gitea.io/gitea/modules/optional"
1717

1818
"xorm.io/builder"
1919
"xorm.io/xorm"
@@ -34,8 +34,8 @@ type IssuesOptions struct { //nolint
3434
MilestoneIDs []int64
3535
ProjectID int64
3636
ProjectBoardID int64
37-
IsClosed util.OptionalBool
38-
IsPull util.OptionalBool
37+
IsClosed optional.Option[bool]
38+
IsPull optional.Option[bool]
3939
LabelIDs []int64
4040
IncludedLabelNames []string
4141
ExcludedLabelNames []string
@@ -46,7 +46,7 @@ type IssuesOptions struct { //nolint
4646
UpdatedBeforeUnix int64
4747
// prioritize issues from this repo
4848
PriorityRepoID int64
49-
IsArchived util.OptionalBool
49+
IsArchived optional.Option[bool]
5050
Org *organization.Organization // issues permission scope
5151
Team *organization.Team // issues permission scope
5252
User *user_model.User // issues permission scope
@@ -217,8 +217,8 @@ func applyConditions(sess *xorm.Session, opts *IssuesOptions) *xorm.Session {
217217

218218
applyRepoConditions(sess, opts)
219219

220-
if !opts.IsClosed.IsNone() {
221-
sess.And("issue.is_closed=?", opts.IsClosed.IsTrue())
220+
if opts.IsClosed.Has() {
221+
sess.And("issue.is_closed=?", opts.IsClosed.Value())
222222
}
223223

224224
if opts.AssigneeID > 0 {
@@ -260,21 +260,18 @@ func applyConditions(sess *xorm.Session, opts *IssuesOptions) *xorm.Session {
260260

261261
applyProjectBoardCondition(sess, opts)
262262

263-
switch opts.IsPull {
264-
case util.OptionalBoolTrue:
265-
sess.And("issue.is_pull=?", true)
266-
case util.OptionalBoolFalse:
267-
sess.And("issue.is_pull=?", false)
263+
if opts.IsPull.Has() {
264+
sess.And("issue.is_pull=?", opts.IsPull.Value())
268265
}
269266

270-
if opts.IsArchived != util.OptionalBoolNone {
271-
sess.And(builder.Eq{"repository.is_archived": opts.IsArchived.IsTrue()})
267+
if opts.IsArchived.Has() {
268+
sess.And(builder.Eq{"repository.is_archived": opts.IsArchived.Value()})
272269
}
273270

274271
applyLabelsCondition(sess, opts)
275272

276273
if opts.User != nil {
277-
sess.And(issuePullAccessibleRepoCond("issue.repo_id", opts.User.ID, opts.Org, opts.Team, opts.IsPull.IsTrue()))
274+
sess.And(issuePullAccessibleRepoCond("issue.repo_id", opts.User.ID, opts.Org, opts.Team, opts.IsPull.Value()))
278275
}
279276

280277
return sess

models/issues/issue_stats.go

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

1010
"code.gitea.io/gitea/models/db"
11-
"code.gitea.io/gitea/modules/util"
1211

1312
"xorm.io/builder"
1413
"xorm.io/xorm"
@@ -170,11 +169,8 @@ func applyIssuesOptions(sess *xorm.Session, opts *IssuesOptions, issueIDs []int6
170169
applyReviewedCondition(sess, opts.ReviewedID)
171170
}
172171

173-
switch opts.IsPull {
174-
case util.OptionalBoolTrue:
175-
sess.And("issue.is_pull=?", true)
176-
case util.OptionalBoolFalse:
177-
sess.And("issue.is_pull=?", false)
172+
if opts.IsPull.Has() {
173+
sess.And("issue.is_pull=?", opts.IsPull.Value())
178174
}
179175

180176
return sess

models/issues/label.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212

1313
"code.gitea.io/gitea/models/db"
1414
"code.gitea.io/gitea/modules/label"
15+
"code.gitea.io/gitea/modules/optional"
1516
"code.gitea.io/gitea/modules/timeutil"
1617
"code.gitea.io/gitea/modules/util"
1718

@@ -126,7 +127,7 @@ func (l *Label) CalOpenOrgIssues(ctx context.Context, repoID, labelID int64) {
126127
counts, _ := CountIssuesByRepo(ctx, &IssuesOptions{
127128
RepoIDs: []int64{repoID},
128129
LabelIDs: []int64{labelID},
129-
IsClosed: util.OptionalBoolFalse,
130+
IsClosed: optional.Some(false),
130131
})
131132

132133
for _, count := range counts {

models/issues/milestone.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111

1212
"code.gitea.io/gitea/models/db"
1313
repo_model "code.gitea.io/gitea/models/repo"
14+
"code.gitea.io/gitea/modules/optional"
1415
api "code.gitea.io/gitea/modules/structs"
1516
"code.gitea.io/gitea/modules/timeutil"
1617
"code.gitea.io/gitea/modules/util"
@@ -302,7 +303,7 @@ func DeleteMilestoneByRepoID(ctx context.Context, repoID, id int64) error {
302303
}
303304
numClosedMilestones, err := db.Count[Milestone](ctx, FindMilestoneOptions{
304305
RepoID: repo.ID,
305-
IsClosed: util.OptionalBoolTrue,
306+
IsClosed: optional.Some(true),
306307
})
307308
if err != nil {
308309
return err

models/issues/milestone_list.go

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

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

1313
"xorm.io/builder"
1414
)
@@ -28,7 +28,7 @@ func (milestones MilestoneList) getMilestoneIDs() []int64 {
2828
type FindMilestoneOptions struct {
2929
db.ListOptions
3030
RepoID int64
31-
IsClosed util.OptionalBool
31+
IsClosed optional.Option[bool]
3232
Name string
3333
SortType string
3434
RepoCond builder.Cond
@@ -40,8 +40,8 @@ func (opts FindMilestoneOptions) ToConds() builder.Cond {
4040
if opts.RepoID != 0 {
4141
cond = cond.And(builder.Eq{"repo_id": opts.RepoID})
4242
}
43-
if opts.IsClosed != util.OptionalBoolNone {
44-
cond = cond.And(builder.Eq{"is_closed": opts.IsClosed.IsTrue()})
43+
if opts.IsClosed.Has() {
44+
cond = cond.And(builder.Eq{"is_closed": opts.IsClosed.Value()})
4545
}
4646
if opts.RepoCond != nil && opts.RepoCond.IsValid() {
4747
cond = cond.And(builder.In("repo_id", builder.Select("id").From("repository").Where(opts.RepoCond)))

models/issues/milestone_test.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ import (
1111
issues_model "code.gitea.io/gitea/models/issues"
1212
repo_model "code.gitea.io/gitea/models/repo"
1313
"code.gitea.io/gitea/models/unittest"
14+
"code.gitea.io/gitea/modules/optional"
1415
"code.gitea.io/gitea/modules/setting"
1516
api "code.gitea.io/gitea/modules/structs"
1617
"code.gitea.io/gitea/modules/timeutil"
17-
"code.gitea.io/gitea/modules/util"
1818

1919
"github.com/stretchr/testify/assert"
2020
)
@@ -39,10 +39,10 @@ func TestGetMilestoneByRepoID(t *testing.T) {
3939
func TestGetMilestonesByRepoID(t *testing.T) {
4040
assert.NoError(t, unittest.PrepareTestDatabase())
4141
test := func(repoID int64, state api.StateType) {
42-
var isClosed util.OptionalBool
42+
var isClosed optional.Option[bool]
4343
switch state {
4444
case api.StateClosed, api.StateOpen:
45-
isClosed = util.OptionalBoolOf(state == api.StateClosed)
45+
isClosed = optional.Some(state == api.StateClosed)
4646
}
4747
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: repoID})
4848
milestones, err := db.Find[issues_model.Milestone](db.DefaultContext, issues_model.FindMilestoneOptions{
@@ -84,7 +84,7 @@ func TestGetMilestonesByRepoID(t *testing.T) {
8484

8585
milestones, err := db.Find[issues_model.Milestone](db.DefaultContext, issues_model.FindMilestoneOptions{
8686
RepoID: unittest.NonexistentID,
87-
IsClosed: util.OptionalBoolFalse,
87+
IsClosed: optional.Some(false),
8888
})
8989
assert.NoError(t, err)
9090
assert.Len(t, milestones, 0)
@@ -101,7 +101,7 @@ func TestGetMilestones(t *testing.T) {
101101
PageSize: setting.UI.IssuePagingNum,
102102
},
103103
RepoID: repo.ID,
104-
IsClosed: util.OptionalBoolFalse,
104+
IsClosed: optional.Some(false),
105105
SortType: sortType,
106106
})
107107
assert.NoError(t, err)
@@ -118,7 +118,7 @@ func TestGetMilestones(t *testing.T) {
118118
PageSize: setting.UI.IssuePagingNum,
119119
},
120120
RepoID: repo.ID,
121-
IsClosed: util.OptionalBoolTrue,
121+
IsClosed: optional.Some(true),
122122
Name: "",
123123
SortType: sortType,
124124
})
@@ -178,7 +178,7 @@ func TestCountRepoClosedMilestones(t *testing.T) {
178178
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: repoID})
179179
count, err := db.Count[issues_model.Milestone](db.DefaultContext, issues_model.FindMilestoneOptions{
180180
RepoID: repoID,
181-
IsClosed: util.OptionalBoolTrue,
181+
IsClosed: optional.Some(true),
182182
})
183183
assert.NoError(t, err)
184184
assert.EqualValues(t, repo.NumClosedMilestones, count)
@@ -189,7 +189,7 @@ func TestCountRepoClosedMilestones(t *testing.T) {
189189

190190
count, err := db.Count[issues_model.Milestone](db.DefaultContext, issues_model.FindMilestoneOptions{
191191
RepoID: unittest.NonexistentID,
192-
IsClosed: util.OptionalBoolTrue,
192+
IsClosed: optional.Some(true),
193193
})
194194
assert.NoError(t, err)
195195
assert.EqualValues(t, 0, count)
@@ -206,7 +206,7 @@ func TestCountMilestonesByRepoIDs(t *testing.T) {
206206

207207
openCounts, err := issues_model.CountMilestonesMap(db.DefaultContext, issues_model.FindMilestoneOptions{
208208
RepoIDs: []int64{1, 2},
209-
IsClosed: util.OptionalBoolFalse,
209+
IsClosed: optional.Some(false),
210210
})
211211
assert.NoError(t, err)
212212
assert.EqualValues(t, repo1OpenCount, openCounts[1])
@@ -215,7 +215,7 @@ func TestCountMilestonesByRepoIDs(t *testing.T) {
215215
closedCounts, err := issues_model.CountMilestonesMap(db.DefaultContext,
216216
issues_model.FindMilestoneOptions{
217217
RepoIDs: []int64{1, 2},
218-
IsClosed: util.OptionalBoolTrue,
218+
IsClosed: optional.Some(true),
219219
})
220220
assert.NoError(t, err)
221221
assert.EqualValues(t, repo1ClosedCount, closedCounts[1])
@@ -234,7 +234,7 @@ func TestGetMilestonesByRepoIDs(t *testing.T) {
234234
PageSize: setting.UI.IssuePagingNum,
235235
},
236236
RepoIDs: []int64{repo1.ID, repo2.ID},
237-
IsClosed: util.OptionalBoolFalse,
237+
IsClosed: optional.Some(false),
238238
SortType: sortType,
239239
})
240240
assert.NoError(t, err)
@@ -252,7 +252,7 @@ func TestGetMilestonesByRepoIDs(t *testing.T) {
252252
PageSize: setting.UI.IssuePagingNum,
253253
},
254254
RepoIDs: []int64{repo1.ID, repo2.ID},
255-
IsClosed: util.OptionalBoolTrue,
255+
IsClosed: optional.Some(true),
256256
SortType: sortType,
257257
})
258258
assert.NoError(t, err)

models/issues/review_list.go

Lines changed: 4 additions & 4 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
)
@@ -68,7 +68,7 @@ type FindReviewOptions struct {
6868
IssueID int64
6969
ReviewerID int64
7070
OfficialOnly bool
71-
Dismissed util.OptionalBool
71+
Dismissed optional.Option[bool]
7272
}
7373

7474
func (opts *FindReviewOptions) toCond() builder.Cond {
@@ -85,8 +85,8 @@ func (opts *FindReviewOptions) toCond() builder.Cond {
8585
if opts.OfficialOnly {
8686
cond = cond.And(builder.Eq{"official": true})
8787
}
88-
if !opts.Dismissed.IsNone() {
89-
cond = cond.And(builder.Eq{"dismissed": opts.Dismissed.IsTrue()})
88+
if opts.Dismissed.Has() {
89+
cond = cond.And(builder.Eq{"dismissed": opts.Dismissed.Value()})
9090
}
9191
return cond
9292
}

0 commit comments

Comments
 (0)