Querybm
A simple SQL query builder and mapper
Install / Use
/learn @tecowl/QuerybmREADME
querybm
A simple SQL query builder and mapper. querybm works well with models generated by sqlc. But it works with your models without sqlc.
FEATURES
- [x] No dependencies
- [x] Build SELECT statement dynamically with struct type
- [x] Mapping with generics instead of reflection
- [x] 100% test coverage
See godoc for more details.
INSTALL
go get -u github.com/tecowl/querybm
USAGE
// You can use model generated by sqlc instead of defining your own
type Author struct {
AuthorID int32
Name string
}
type Condition struct {
Name string
}
func (c *Condition) Build(s *querybm.Statement) {
if c.Name != "" {
s.Where.Add(Field("name", LikeContains(c.Name)))
}
}
func New(db *sql.DB, condition *Condition) *querybm.Query[Author] {
return querybm.New(
db,
"authors",
querybm.NewFields(
[]string{"author_id", "name"},
func(rows querybm.Scanner, author *models.Author) error {
return rows.Scan(&author.AuthorID, &author.Name)
},
),
condition,
querybm.NewSortItem("name", false),
querybm.NewLimitOffset(100, 0),
)
}
func main() {
db, _ := sql.Open("..", "...")
defer db.Close()
condition := &Condition{Name: "John"}
q := New(db, condition)
cnt, _ := q.Count(ctx)
list, _ := q.List(ctx)
}
EXAMPLES
- Simple Dynamic Query
- Query with enumerations
- Query with range
- Query with INNER JOIN
- Query with OUTER JOIN
TESTS
- MySQL
- PostgreSQL
- SQLite3
LICENSE
Related Skills
feishu-drive
345.9k|
things-mac
345.9kManage Things 3 via the `things` CLI on macOS (add/update projects+todos via URL scheme; read/search/list from the local Things database)
clawhub
345.9kUse the ClawHub CLI to search, install, update, and publish agent skills from clawhub.com
postkit
PostgreSQL-native identity, configuration, metering, and job queues. SQL functions that work with any language or driver
