appview: db: add FilterBetween #520

closed
opened by ptr.pet targeting master from ptr.pet/core: pipeline-paginated
Changed files
+8 -1
appview
db
+8 -1
appview/db/db.go
···
// transfer data, constructing pull_at from pulls table
_, err = tx.Exec(`
insert into pull_submissions_new (id, pull_at, round_number, patch, created)
-
select
+
select
ps.id,
'at://' || p.owner_did || '/sh.tangled.repo.pull/' || p.rkey,
ps.round_number,
···
func FilterContains(key string, arg any) filter {
return newFilter(key, "like", fmt.Sprintf("%%%v%%", arg))
+
func FilterBetween(key string, arg1, arg2 any) filter {
+
return newFilter(key, "between", []any{arg1, arg2})
+
}
func (f filter) Condition() string {
rv := reflect.ValueOf(f.arg)
kind := rv.Kind()
+
if f.cmp == "between" {
+
return fmt.Sprintf("%s %s ? and ?", f.key, f.cmp)
+
}
+
// if we have `FilterIn(k, [1, 2, 3])`, compile it down to `k in (?, ?, ?)`
if (kind == reflect.Slice && rv.Type().Elem().Kind() != reflect.Uint8) || kind == reflect.Array {
if rv.Len() == 0 {