diff options
| author | 2025-03-09 17:47:56 +0100 | |
|---|---|---|
| committer | 2025-12-01 22:08:04 +0100 | |
| commit | b1af8fd87760b34e3ff2fd3bda38f211815a0473 (patch) | |
| tree | 9317fad1a7ec298d7a8d2678e4e422953bbc6f33 /vendor/github.com/uptrace/bun/dialect/pgdialect/range.go | |
| parent | [chore] update URLs to forked source (diff) | |
| download | gotosocial-b1af8fd87760b34e3ff2fd3bda38f211815a0473.tar.xz | |
[chore] remove vendor
Diffstat (limited to 'vendor/github.com/uptrace/bun/dialect/pgdialect/range.go')
| -rw-r--r-- | vendor/github.com/uptrace/bun/dialect/pgdialect/range.go | 138 |
1 files changed, 0 insertions, 138 deletions
diff --git a/vendor/github.com/uptrace/bun/dialect/pgdialect/range.go b/vendor/github.com/uptrace/bun/dialect/pgdialect/range.go deleted file mode 100644 index 936ad5521..000000000 --- a/vendor/github.com/uptrace/bun/dialect/pgdialect/range.go +++ /dev/null @@ -1,138 +0,0 @@ -package pgdialect - -import ( - "database/sql" - "fmt" - "io" - "time" - - "github.com/uptrace/bun/internal" - "github.com/uptrace/bun/schema" -) - -type MultiRange[T any] []Range[T] - -type Range[T any] struct { - Lower, Upper T - LowerBound, UpperBound RangeBound -} - -type RangeBound byte - -const ( - RangeBoundInclusiveLeft RangeBound = '[' - RangeBoundInclusiveRight RangeBound = ']' - RangeBoundExclusiveLeft RangeBound = '(' - RangeBoundExclusiveRight RangeBound = ')' -) - -func NewRange[T any](lower, upper T) Range[T] { - return Range[T]{ - Lower: lower, - Upper: upper, - LowerBound: RangeBoundInclusiveLeft, - UpperBound: RangeBoundExclusiveRight, - } -} - -var _ sql.Scanner = (*Range[any])(nil) - -func (r *Range[T]) Scan(anySrc any) (err error) { - src, ok := anySrc.([]byte) - if !ok { - return fmt.Errorf("pgdialect: Range can't scan %T", anySrc) - } - - if len(src) == 0 { - return io.ErrUnexpectedEOF - } - r.LowerBound = RangeBound(src[0]) - src = src[1:] - - src, err = scanElem(&r.Lower, src) - if err != nil { - return err - } - - if len(src) == 0 { - return io.ErrUnexpectedEOF - } - if ch := src[0]; ch != ',' { - return fmt.Errorf("got %q, wanted %q", ch, ',') - } - src = src[1:] - - src, err = scanElem(&r.Upper, src) - if err != nil { - return err - } - - if len(src) == 0 { - return io.ErrUnexpectedEOF - } - r.UpperBound = RangeBound(src[0]) - src = src[1:] - - if len(src) > 0 { - return fmt.Errorf("unread data: %q", src) - } - return nil -} - -var _ schema.QueryAppender = (*Range[any])(nil) - -func (r *Range[T]) AppendQuery(fmt schema.Formatter, buf []byte) ([]byte, error) { - buf = append(buf, byte(r.LowerBound)) - buf = appendElem(buf, r.Lower) - buf = append(buf, ',') - buf = appendElem(buf, r.Upper) - buf = append(buf, byte(r.UpperBound)) - return buf, nil -} - -func scanElem(ptr any, src []byte) ([]byte, error) { - switch ptr := ptr.(type) { - case *time.Time: - src, str, err := readStringLiteral(src) - if err != nil { - return nil, err - } - - tm, err := internal.ParseTime(internal.String(str)) - if err != nil { - return nil, err - } - *ptr = tm - - return src, nil - - case sql.Scanner: - src, str, err := readStringLiteral(src) - if err != nil { - return nil, err - } - if err := ptr.Scan(str); err != nil { - return nil, err - } - return src, nil - - default: - panic(fmt.Errorf("unsupported range type: %T", ptr)) - } -} - -func readStringLiteral(src []byte) ([]byte, []byte, error) { - p := newParser(src) - - if err := p.Skip('"'); err != nil { - return nil, nil, err - } - - str, err := p.ReadSubstring('"') - if err != nil { - return nil, nil, err - } - - src = p.Remaining() - return src, str, nil -} |
