(Feat): Initial Commit
This commit is contained in:
69
internal/util/db/example_test.go
Normal file
69
internal/util/db/example_test.go
Normal file
@@ -0,0 +1,69 @@
|
||||
package db_test
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"allaboutapps.dev/aw/go-starter/internal/models"
|
||||
"allaboutapps.dev/aw/go-starter/internal/util/db"
|
||||
"github.com/aarondl/sqlboiler/v4/queries"
|
||||
"github.com/aarondl/sqlboiler/v4/queries/qm"
|
||||
)
|
||||
|
||||
type PublicName struct {
|
||||
First string `json:"firstName"`
|
||||
}
|
||||
|
||||
type Name struct {
|
||||
PublicName
|
||||
MiddleName string `json:"-"`
|
||||
Lastname string `json:"lastName"`
|
||||
}
|
||||
|
||||
type UserFilter struct {
|
||||
Name
|
||||
Country string `json:"country"`
|
||||
City string
|
||||
Scopes []string `json:"scopes"`
|
||||
Age *int `json:"age"`
|
||||
Height *float32 `json:"height"`
|
||||
}
|
||||
|
||||
func ExampleWhereJSON() {
|
||||
age := 42
|
||||
filter := UserFilter{
|
||||
Name: Name{
|
||||
PublicName: PublicName{
|
||||
First: "Max",
|
||||
},
|
||||
MiddleName: "Gustav",
|
||||
Lastname: "Muster",
|
||||
},
|
||||
Country: "Austria",
|
||||
City: "Vienna",
|
||||
Scopes: []string{"app", "user_info"},
|
||||
Age: &age,
|
||||
}
|
||||
|
||||
query := models.NewQuery(
|
||||
qm.Select("*"),
|
||||
qm.From("users"),
|
||||
db.WhereJSON("users", "profile", filter),
|
||||
)
|
||||
|
||||
sql, args := queries.BuildQuery(query)
|
||||
|
||||
fmt.Println(sql)
|
||||
fmt.Print("[")
|
||||
for i := range args {
|
||||
if i < len(args)-1 {
|
||||
fmt.Printf("%v, ", args[i])
|
||||
} else {
|
||||
fmt.Printf("%v", args[i])
|
||||
}
|
||||
}
|
||||
fmt.Println("]")
|
||||
|
||||
// Output:
|
||||
// SELECT * FROM "users" WHERE (users.profile->>'firstName' = $1 AND users.profile->>'lastName' = $2 AND users.profile->>'country' = $3 AND users.profile->'scopes' <@ to_jsonb($4::text[]) AND users.profile->>'age' = $5);
|
||||
// [Max, Muster, Austria, &[app user_info], 42]
|
||||
}
|
||||
Reference in New Issue
Block a user