From 831ef4f456b260fcde1b0bfac1f05ef5d0022a47 Mon Sep 17 00:00:00 2001 From: dusk Date: Wed, 20 Aug 2025 23:27:42 +0300 Subject: [PATCH] appview: db: add FilterBetween Change-Id: loxxyypnuzpoxokknlnzttwywuskptuu Signed-off-by: dusk --- appview/db/db.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/appview/db/db.go b/appview/db/db.go index cabfaa1b..f440a30e 100644 --- a/appview/db/db.go +++ b/appview/db/db.go @@ -1069,7 +1069,7 @@ func Make(dbPath string) (*DB, error) { // 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, @@ -1170,11 +1170,18 @@ func FilterNotLike(key string, arg any) filter { return newFilter(key, "not like 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 { -- 2.43.0