Skip to content

AndrusGerman/go-criteria

Repository files navigation

🎼 Criteria for Go

📥 Installation

To install the base criteria dependency, run the following command:

go get github.com/AndrusGerman/go-criteria

🎉 Examples

  • MYSQL from URL
var urlParse, err = url.Parse("http://localhost:3000/api/users?filters[0][field]=name&filters[0][operator]=CONTAINS&filters[0][value]=Javi")
if err != nil {
	panic(err)
}

crit, err := criteriafromurl.NewCriteriaFromUrlConverter().ToCriteria(urlParse)
if err != nil {
	panic(err)
}

var sql, params = criteriatomysql.NewCriteriaToMySqlConverter().Convert(
	[]string{"userId"},
	"users",
	crit,
	nil,
)

out: SELECT userId FROM users WHERE name LIKE ? params: [%Javi%]

  • CUSTOM criteria
var crit, err = criteria.NewCriteriaBuilder().
	Order(criteria.NewOrderNone()).
	Filters(
		criteria.NewFilter(
			"userId",
			criteria.EQUAL,
			"10",
		),
		criteria.NewFilter(
			"companyId",
			criteria.GREATER_THAN,
			"12",
		),
		criteria.NewFilter(
			"companyName",
			criteria.CONTAINS,
			"app",
		),
	).GetCriteria()
  • criteria to MongoDB
var query = criteriatomongodb.NewCriteriaToMongodb().Convert(
	[]string{},
	crit,
	nil,
)

🐂 Thanks

This package is initially inspired by the implementation of typescript-criteria created by codelyTv

About

Apply filters with the criteria pattern from go

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages