Let ctx.FormOptionalBool() return optional.Option[bool] (#29461)

just some refactoring bits towards replacing **util.OptionalBool** with
**optional.Option[bool]**

(cherry picked from commit 274c0aea2e88db9bc41690c90e13e8aedf6193d4)
This commit is contained in:
6543 2024-02-28 06:39:12 +01:00 committed by Earl Warren
parent c498c07adf
commit 7b23949f29
WARNING! Although there is a key with this ID in the database it does not verify this commit! This commit is SUSPICIOUS.
GPG key ID: 0579CB2928A78A00
5 changed files with 22 additions and 19 deletions

View file

@ -15,6 +15,7 @@ import (
"code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/db"
user_model "code.gitea.io/gitea/models/user" user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/container" "code.gitea.io/gitea/modules/container"
"code.gitea.io/gitea/modules/optional"
"code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/modules/timeutil" "code.gitea.io/gitea/modules/timeutil"
"code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/util"
@ -228,10 +229,10 @@ type FindReleasesOptions struct {
RepoID int64 RepoID int64
IncludeDrafts bool IncludeDrafts bool
IncludeTags bool IncludeTags bool
IsPreRelease util.OptionalBool IsPreRelease optional.Option[bool]
IsDraft util.OptionalBool IsDraft optional.Option[bool]
TagNames []string TagNames []string
HasSha1 util.OptionalBool // useful to find draft releases which are created with existing tags HasSha1 optional.Option[bool] // useful to find draft releases which are created with existing tags
} }
func (opts FindReleasesOptions) ToConds() builder.Cond { func (opts FindReleasesOptions) ToConds() builder.Cond {
@ -246,14 +247,14 @@ func (opts FindReleasesOptions) ToConds() builder.Cond {
if len(opts.TagNames) > 0 { if len(opts.TagNames) > 0 {
cond = cond.And(builder.In("tag_name", opts.TagNames)) cond = cond.And(builder.In("tag_name", opts.TagNames))
} }
if !opts.IsPreRelease.IsNone() { if opts.IsPreRelease.Has() {
cond = cond.And(builder.Eq{"is_prerelease": opts.IsPreRelease.IsTrue()}) cond = cond.And(builder.Eq{"is_prerelease": opts.IsPreRelease.Value()})
} }
if !opts.IsDraft.IsNone() { if opts.IsDraft.Has() {
cond = cond.And(builder.Eq{"is_draft": opts.IsDraft.IsTrue()}) cond = cond.And(builder.Eq{"is_draft": opts.IsDraft.Value()})
} }
if !opts.HasSha1.IsNone() { if opts.HasSha1.Has() {
if opts.HasSha1.IsTrue() { if opts.HasSha1.Value() {
cond = cond.And(builder.Neq{"sha1": ""}) cond = cond.And(builder.Neq{"sha1": ""})
} else { } else {
cond = cond.And(builder.Eq{"sha1": ""}) cond = cond.And(builder.Eq{"sha1": ""})
@ -275,7 +276,7 @@ func GetTagNamesByRepoID(ctx context.Context, repoID int64) ([]string, error) {
ListOptions: listOptions, ListOptions: listOptions,
IncludeDrafts: true, IncludeDrafts: true,
IncludeTags: true, IncludeTags: true,
HasSha1: util.OptionalBoolTrue, HasSha1: optional.Some(true),
RepoID: repoID, RepoID: repoID,
} }

View file

@ -21,6 +21,7 @@ import (
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/markup"
"code.gitea.io/gitea/modules/markup/markdown" "code.gitea.io/gitea/modules/markup/markdown"
"code.gitea.io/gitea/modules/optional"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/util"
"code.gitea.io/gitea/modules/web" "code.gitea.io/gitea/modules/web"
@ -228,7 +229,7 @@ func TagsList(ctx *context.Context) {
// the drafts should also be included because a real tag might be used as a draft. // the drafts should also be included because a real tag might be used as a draft.
IncludeDrafts: true, IncludeDrafts: true,
IncludeTags: true, IncludeTags: true,
HasSha1: util.OptionalBoolTrue, HasSha1: optional.Some(true),
RepoID: ctx.Repo.Repository.ID, RepoID: ctx.Repo.Repository.ID,
} }

View file

@ -8,6 +8,7 @@ import (
"code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/db"
user_model "code.gitea.io/gitea/models/user" user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/util"
"code.gitea.io/gitea/services/context" "code.gitea.io/gitea/services/context"
"code.gitea.io/gitea/services/convert" "code.gitea.io/gitea/services/convert"
) )
@ -24,7 +25,7 @@ func Search(ctx *context.Context) {
Keyword: ctx.FormTrim("q"), Keyword: ctx.FormTrim("q"),
UID: ctx.FormInt64("uid"), UID: ctx.FormInt64("uid"),
Type: user_model.UserTypeIndividual, Type: user_model.UserTypeIndividual,
IsActive: ctx.FormOptionalBool("active"), IsActive: util.OptionalBoolFromGeneric(ctx.FormOptionalBool("active")),
ListOptions: listOptions, ListOptions: listOptions,
}) })
if err != nil { if err != nil {

View file

@ -17,8 +17,8 @@ import (
"code.gitea.io/gitea/modules/httplib" "code.gitea.io/gitea/modules/httplib"
"code.gitea.io/gitea/modules/json" "code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/optional"
"code.gitea.io/gitea/modules/translation" "code.gitea.io/gitea/modules/translation"
"code.gitea.io/gitea/modules/util"
"code.gitea.io/gitea/modules/web/middleware" "code.gitea.io/gitea/modules/web/middleware"
"github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5"
@ -207,17 +207,17 @@ func (b *Base) FormBool(key string) bool {
return v return v
} }
// FormOptionalBool returns an OptionalBoolTrue or OptionalBoolFalse if the value // FormOptionalBool returns an optional.Some(true) or optional.Some(false) if the value
// for the provided key exists in the form else it returns OptionalBoolNone // for the provided key exists in the form else it returns optional.None[bool]()
func (b *Base) FormOptionalBool(key string) util.OptionalBool { func (b *Base) FormOptionalBool(key string) optional.Option[bool] {
value := b.Req.FormValue(key) value := b.Req.FormValue(key)
if len(value) == 0 { if len(value) == 0 {
return util.OptionalBoolNone return optional.None[bool]()
} }
s := b.Req.FormValue(key) s := b.Req.FormValue(key)
v, _ := strconv.ParseBool(s) v, _ := strconv.ParseBool(s)
v = v || strings.EqualFold(s, "on") v = v || strings.EqualFold(s, "on")
return util.OptionalBoolOf(v) return optional.Some(v)
} }
func (b *Base) SetFormString(key, value string) { func (b *Base) SetFormString(key, value string) {

View file

@ -547,7 +547,7 @@ func RepoAssignment(ctx *Context) context.CancelFunc {
ctx.Data["NumTags"], err = db.Count[repo_model.Release](ctx, repo_model.FindReleasesOptions{ ctx.Data["NumTags"], err = db.Count[repo_model.Release](ctx, repo_model.FindReleasesOptions{
IncludeDrafts: true, IncludeDrafts: true,
IncludeTags: true, IncludeTags: true,
HasSha1: util.OptionalBoolTrue, // only draft releases which are created with existing tags HasSha1: optional.Some(true), // only draft releases which are created with existing tags
RepoID: ctx.Repo.Repository.ID, RepoID: ctx.Repo.Repository.ID,
}) })
if err != nil { if err != nil {