Documentation ¶
Index ¶
- type User
- type UserLoader
- func (l *UserLoader) Clear(key string)
- func (l *UserLoader) Load(key string) (*User, error)
- func (l *UserLoader) LoadAll(keys []string) ([]*User, []error)
- func (l *UserLoader) LoadAllThunk(keys []string) func() ([]*User, []error)
- func (l *UserLoader) LoadThunk(key string) func() (*User, error)
- func (l *UserLoader) Prime(key string, value *User) bool
- type UserLoaderConfig
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type UserLoader ¶
type UserLoader struct {
// contains filtered or unexported fields
}
UserLoader batches and caches requests
func NewLoader ¶
func NewLoader() *UserLoader
NewLoader will collect user requests for 2 milliseconds and send them as a single batch to the fetch func normally fetch would be a database call.
func NewUserLoader ¶
func NewUserLoader(config UserLoaderConfig) *UserLoader
NewUserLoader creates a new UserLoader given a fetch, wait, and maxBatch
func (*UserLoader) Clear ¶
func (l *UserLoader) Clear(key string)
Clear the value at key from the cache, if it exists
func (*UserLoader) Load ¶
func (l *UserLoader) Load(key string) (*User, error)
Load a User by key, batching and caching will be applied automatically
func (*UserLoader) LoadAll ¶
func (l *UserLoader) LoadAll(keys []string) ([]*User, []error)
LoadAll fetches many keys at once. It will be broken into appropriate sized sub batches depending on how the loader is configured
func (*UserLoader) LoadAllThunk ¶ added in v0.4.0
func (l *UserLoader) LoadAllThunk(keys []string) func() ([]*User, []error)
LoadAllThunk returns a function that when called will block waiting for a Users. This method should be used if you want one goroutine to make requests to many different data loaders without blocking until the thunk is called.
func (*UserLoader) LoadThunk ¶
func (l *UserLoader) LoadThunk(key string) func() (*User, error)
LoadThunk returns a function that when called will block waiting for a User. This method should be used if you want one goroutine to make requests to many different data loaders without blocking until the thunk is called.
type UserLoaderConfig ¶
type UserLoaderConfig struct { // Fetch is a method that provides the data for the loader Fetch func(keys []string) ([]*User, []error) // Wait is how long wait before sending a batch Wait time.Duration // MaxBatch will limit the maximum number of keys to send in one batch, 0 = not limit MaxBatch int }
UserLoaderConfig captures the config to create a new UserLoader