summaryrefslogtreecommitdiff
path: root/vendor/github.com/uptrace/bun/query_base.go
diff options
context:
space:
mode:
authorLibravatar tobi <31960611+tsmethurst@users.noreply.github.com>2022-11-28 11:19:39 +0100
committerLibravatar GitHub <noreply@github.com>2022-11-28 11:19:39 +0100
commitdaf44ac2b709922512cfee3cde686b84b4868775 (patch)
tree2967df466f8d4515d32c05cf520ba3e7a19d4fae /vendor/github.com/uptrace/bun/query_base.go
parent[chore]: Bump codeberg.org/gruf/go-store/v2 from 2.0.9 to 2.0.10 (#1160) (diff)
downloadgotosocial-daf44ac2b709922512cfee3cde686b84b4868775.tar.xz
[chore] Bump database dependencies (#1164)
github.com/uptrace/bun v1.1.8 -> v1.1.9 github.com/uptrace/bun/pgdialect v1.1.8 -> v1.1.9 github.com/uptrace/bun/sqlitedialect v1.1.8 -> v1.1.9 modernc.org/sqlite v1.18.2 -> v1.19.5
Diffstat (limited to 'vendor/github.com/uptrace/bun/query_base.go')
-rw-r--r--vendor/github.com/uptrace/bun/query_base.go23
1 files changed, 14 insertions, 9 deletions
diff --git a/vendor/github.com/uptrace/bun/query_base.go b/vendor/github.com/uptrace/bun/query_base.go
index b140ca24d..9df70d1f4 100644
--- a/vendor/github.com/uptrace/bun/query_base.go
+++ b/vendor/github.com/uptrace/bun/query_base.go
@@ -20,8 +20,9 @@ const (
)
type withQuery struct {
- name string
- query schema.QueryAppender
+ name string
+ query schema.QueryAppender
+ recursive bool
}
// IConn is a common interface for *sql.DB, *sql.Conn, and *sql.Tx.
@@ -158,8 +159,7 @@ func (q *baseQuery) setConn(db IConn) {
}
}
-// TODO: rename to setModel
-func (q *baseQuery) setTableModel(modeli interface{}) {
+func (q *baseQuery) setModel(modeli interface{}) {
model, err := newSingleModel(q.db, modeli)
if err != nil {
q.setErr(err)
@@ -238,17 +238,18 @@ func (q *baseQuery) isSoftDelete() bool {
if q.table != nil {
return q.table.SoftDeleteField != nil &&
!q.flags.Has(allWithDeletedFlag) &&
- !q.flags.Has(forceDeleteFlag)
+ (!q.flags.Has(forceDeleteFlag) || q.flags.Has(deletedFlag))
}
return false
}
//------------------------------------------------------------------------------
-func (q *baseQuery) addWith(name string, query schema.QueryAppender) {
+func (q *baseQuery) addWith(name string, query schema.QueryAppender, recursive bool) {
q.with = append(q.with, withQuery{
- name: name,
- query: query,
+ name: name,
+ query: query,
+ recursive: recursive,
})
}
@@ -263,6 +264,10 @@ func (q *baseQuery) appendWith(fmter schema.Formatter, b []byte) (_ []byte, err
b = append(b, ", "...)
}
+ if with.recursive {
+ b = append(b, "RECURSIVE "...)
+ }
+
b, err = q.appendCTE(fmter, b, with)
if err != nil {
return nil, err
@@ -768,7 +773,7 @@ func (q *whereBaseQuery) addWhereCols(cols []string) {
func (q *whereBaseQuery) mustAppendWhere(
fmter schema.Formatter, b []byte, withAlias bool,
) ([]byte, error) {
- if len(q.where) == 0 && q.whereFields == nil {
+ if len(q.where) == 0 && q.whereFields == nil && !q.flags.Has(deletedFlag) {
err := errors.New("bun: Update and Delete queries require at least one Where")
return nil, err
}