summaryrefslogtreecommitdiff
path: root/vendor/github.com/uptrace/bun/internal
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/uptrace/bun/internal')
-rw-r--r--vendor/github.com/uptrace/bun/internal/tagparser/parser.go24
1 files changed, 21 insertions, 3 deletions
diff --git a/vendor/github.com/uptrace/bun/internal/tagparser/parser.go b/vendor/github.com/uptrace/bun/internal/tagparser/parser.go
index eb3246536..a3905853d 100644
--- a/vendor/github.com/uptrace/bun/internal/tagparser/parser.go
+++ b/vendor/github.com/uptrace/bun/internal/tagparser/parser.go
@@ -6,7 +6,11 @@ import (
type Tag struct {
Name string
- Options map[string]string
+ Options map[string][]string
+}
+
+func (t Tag) IsZero() bool {
+ return t.Name == "" && t.Options == nil
}
func (t Tag) HasOption(name string) bool {
@@ -14,7 +18,17 @@ func (t Tag) HasOption(name string) bool {
return ok
}
+func (t Tag) Option(name string) (string, bool) {
+ if vs, ok := t.Options[name]; ok {
+ return vs[len(vs)-1], true
+ }
+ return "", false
+}
+
func Parse(s string) Tag {
+ if s == "" {
+ return Tag{}
+ }
p := parser{
s: s,
}
@@ -45,9 +59,13 @@ func (p *parser) addOption(key, value string) {
return
}
if p.tag.Options == nil {
- p.tag.Options = make(map[string]string)
+ p.tag.Options = make(map[string][]string)
+ }
+ if vs, ok := p.tag.Options[key]; ok {
+ p.tag.Options[key] = append(vs, value)
+ } else {
+ p.tag.Options[key] = []string{value}
}
- p.tag.Options[key] = value
}
func (p *parser) parse() {