diff options
Diffstat (limited to 'vendor/github.com/uptrace/bun/dialect/pgdialect/parser.go')
| -rw-r--r-- | vendor/github.com/uptrace/bun/dialect/pgdialect/parser.go | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/vendor/github.com/uptrace/bun/dialect/pgdialect/parser.go b/vendor/github.com/uptrace/bun/dialect/pgdialect/parser.go index 08f4727db..c0a6299d9 100644 --- a/vendor/github.com/uptrace/bun/dialect/pgdialect/parser.go +++ b/vendor/github.com/uptrace/bun/dialect/pgdialect/parser.go @@ -105,3 +105,39 @@ func (p *pgparser) ReadRange(ch byte) ([]byte, error) { return p.buf, nil } + +func (p *pgparser) ReadJSON() ([]byte, error) { + p.Unread() + + c, err := p.ReadByte() + if err != nil { + return nil, err + } + + p.buf = p.buf[:0] + + depth := 0 + for { + switch c { + case '{': + depth++ + case '}': + depth-- + } + + p.buf = append(p.buf, c) + + if depth == 0 { + break + } + + next, err := p.ReadByte() + if err != nil { + return nil, err + } + + c = next + } + + return p.buf, nil +} |
