Compare commits

...
1 Commits
Author SHA1 Message Date
lukaszraczylo 5cd22318f1 Add environment variables to steer the query cache. 2021-12-03 09:12:59 +00:00
2 changed files with 33 additions and 3 deletions
+4 -1
View File
@@ -23,12 +23,15 @@ Therefore, I present you the simple client to which you can copy & paste your gr
* Executing GraphQL queries as they are, without types declaration
* HTTP2 support!
* Support for additional headers
* Query cache
## Usage example
### Environment variables
* `GRAPHQL_ENDPOINT` - Your GraphQL endpoint. Default: `http://127.0.0.1:9090/v1/graphql`
* `GRAPHQL_CACHE` - Should the query cache be enabled? Default: `false`
* `GRAPHQL_CACHE_TTL` - Cache TTL in seconds for SELECT type of queries. Default: `5`
* `LOG_LEVEL` - Logging level. Default: `info`
### Example reader code
@@ -37,7 +40,7 @@ Therefore, I present you the simple client to which you can copy & paste your gr
```go
import (
fmt
gql "github.com/lukaszraczylo/simple-gql-client"
gql "github.com/lukaszraczylo/go-simple-graphql"
)
headers := map[string]interface{}{
+29 -2
View File
@@ -18,6 +18,7 @@ import (
"net"
"net/http"
"os"
"strconv"
"time"
"github.com/allegro/bigcache/v3"
@@ -49,6 +50,32 @@ func pickGraphqlEndpoint() (graphqlEndpoint string) {
return graphqlEndpoint
}
func setCacheTTL() int {
value, present := os.LookupEnv("GRAPHQL_CACHE_TTL")
if present && value != "" {
i, err := strconv.Atoi(value)
if err != nil {
panic("Invalid value for query cache ttl")
}
return int(i)
} else {
return 5
}
}
func setCacheEnabled() bool {
value, present := os.LookupEnv("GRAPHQL_CACHE")
if present && value != "" {
b, err := strconv.ParseBool(value)
if err != nil {
panic("Invalid value for query cache")
}
return b
} else {
return false
}
}
func NewConnection() *GraphQL {
return &GraphQL{
Endpoint: pickGraphqlEndpoint(),
@@ -63,13 +90,13 @@ func NewConnection() *GraphQL {
},
},
Log: logging.NewLogger(),
Cache: false,
Cache: setCacheEnabled(),
CacheStore: setupCache(),
}
}
func setupCache() *bigcache.BigCache {
cache, err := bigcache.NewBigCache(bigcache.DefaultConfig(10 * time.Second))
cache, err := bigcache.NewBigCache(bigcache.DefaultConfig(time.Duration(setCacheTTL()) * time.Second))
if err != nil {
panic("Error creating cache: " + err.Error())
}