mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-12-17 16:33:04 -06:00
Import export (#194)
* start with export/import code * messing about with decoding/encoding * some more fiddling * stuff is WORKING * working pretty alright! * go fmt * fix up tests, add docs * start backup/restore doc * tweaks * credits * update advancedVisibility settings * update bun library -> v1.0.4 Signed-off-by: kim (grufwub) <grufwub@gmail.com> * update oauth library -> v4.3.1-SSB Signed-off-by: kim (grufwub) <grufwub@gmail.com> * handle oauth token scope, fix user.SigninCount + token.UserID Signed-off-by: kim (grufwub) <grufwub@gmail.com> * update oauth library --> v4.3.2-SSB Signed-off-by: kim (grufwub) <grufwub@gmail.com> * update sqlite library -> v1.13.0 Signed-off-by: kim (grufwub) <grufwub@gmail.com> * review changes * start with export/import code * messing about with decoding/encoding * some more fiddling * stuff is WORKING * working pretty alright! * go fmt * fix up tests, add docs * start backup/restore doc * tweaks * credits * update advancedVisibility settings * review changes Co-authored-by: kim (grufwub) <grufwub@gmail.com> Co-authored-by: kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>
This commit is contained in:
parent
a027da0ac9
commit
555ea8edfb
61 changed files with 4031 additions and 250 deletions
|
|
@ -19,6 +19,7 @@
|
|||
package bundb
|
||||
|
||||
import (
|
||||
"github.com/superseriousbusiness/gotosocial/internal/db"
|
||||
"github.com/uptrace/bun"
|
||||
)
|
||||
|
||||
|
|
@ -35,3 +36,65 @@ func whereEmptyOrNull(column string) func(*bun.SelectQuery) *bun.SelectQuery {
|
|||
WhereOr("? = ''", bun.Ident(column))
|
||||
}
|
||||
}
|
||||
|
||||
// updateWhere parses []db.Where and adds it to the given update query.
|
||||
func updateWhere(q *bun.UpdateQuery, where []db.Where) {
|
||||
for _, w := range where {
|
||||
query, args := parseWhere(w)
|
||||
q = q.Where(query, args...)
|
||||
}
|
||||
}
|
||||
|
||||
// selectWhere parses []db.Where and adds it to the given select query.
|
||||
func selectWhere(q *bun.SelectQuery, where []db.Where) {
|
||||
for _, w := range where {
|
||||
query, args := parseWhere(w)
|
||||
q = q.Where(query, args...)
|
||||
}
|
||||
}
|
||||
|
||||
// deleteWhere parses []db.Where and adds it to the given where query.
|
||||
func deleteWhere(q *bun.DeleteQuery, where []db.Where) {
|
||||
for _, w := range where {
|
||||
query, args := parseWhere(w)
|
||||
q = q.Where(query, args...)
|
||||
}
|
||||
}
|
||||
|
||||
// parseWhere looks through the options on a single db.Where entry, and
|
||||
// returns the appropriate query string and arguments.
|
||||
func parseWhere(w db.Where) (query string, args []interface{}) {
|
||||
if w.Not {
|
||||
if w.Value == nil {
|
||||
query = "? IS NOT NULL"
|
||||
args = []interface{}{bun.Ident(w.Key)}
|
||||
return
|
||||
}
|
||||
|
||||
if w.CaseInsensitive {
|
||||
query = "LOWER(?) != LOWER(?)"
|
||||
args = []interface{}{bun.Safe(w.Key), w.Value}
|
||||
return
|
||||
}
|
||||
|
||||
query = "? != ?"
|
||||
args = []interface{}{bun.Safe(w.Key), w.Value}
|
||||
return
|
||||
}
|
||||
|
||||
if w.Value == nil {
|
||||
query = "? IS NULL"
|
||||
args = []interface{}{bun.Ident(w.Key)}
|
||||
return
|
||||
}
|
||||
|
||||
if w.CaseInsensitive {
|
||||
query = "LOWER(?) = LOWER(?)"
|
||||
args = []interface{}{bun.Safe(w.Key), w.Value}
|
||||
return
|
||||
}
|
||||
|
||||
query = "? = ?"
|
||||
args = []interface{}{bun.Safe(w.Key), w.Value}
|
||||
return
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue