
Go queries, made simple.
One client. Many data types.
Shared cache, background refresh, and focused invalidation.
go get github.com/Waterkyuu/soroiOne client. Different result types.
A User profile and a []User list share the same client, while keeping their types.
type User struct { Name string}
loadUser := func(context.Context) (User, error) { return User{Name: "Alice"}, nil}loadUsers := func(context.Context) ([]User, error) { return []User{{Name: "Alice"}}, nil}
client := soroi.NewClient(soroi.Options{ StaleTime: time.Minute,})defer client.Close()
profile := soroi.Query(client, "user:42", loadUser)users := soroi.Query(client, "users", loadUsers)defer profile.Close()defer users.Close()