Query Module
Pagination, filter, and sort helpers for list operations.
Pagination
Offset/Limit
import "github.com/parevo/core/query"
page := query.DefaultPage().WithLimit(50).WithOffset(100)
limit, offset := page.SQL() // 50, 100
Cursor-based
cursor := query.DefaultCursor().WithAfter("last_id").WithLimit(20)
Filtering
var f query.Filters
f.Eq("status", "active")
f.Like("name", "%foo%")
f.In("tenant_id", []string{"t1", "t2"})
f.Gte("created_at", time.Now().Add(-24*time.Hour))
Operators: eq, ne, gt, gte, lt, lte, like, in, nin, null, nnull.
Sort
var s query.SortBy
s.Desc("created_at")
s.Asc("name")
SQL building
b := query.NewSQLBuilder(query.PlaceholderQ) // MySQL
// b := query.NewSQLBuilder(query.PlaceholderDollar) // Postgres
where, args := b.Where(filters)
orderBy := b.OrderBy(sortBy)
// With whitelist (user input): use WhereSafe/OrderBySafe
b = query.NewSQLBuilder(query.PlaceholderQ).WithWhitelist([]string{"status", "name", "created_at"})
where, args, err := b.WhereSafe(filters)
// SELECT * FROM users WHERE status = ? AND name LIKE ? ORDER BY created_at DESC
Combined params
params := query.NewParams().
WithPage(query.DefaultPage().WithLimit(20)).
WithFilter(filters).
WithSort(sortBy)