Skip to content

Commit

Permalink
Add environment variables to steer the query cache.
Browse files Browse the repository at this point in the history
  • Loading branch information
lukaszraczylo committed Dec 3, 2021
1 parent 13955da commit 5cd2231
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 3 deletions.
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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{}{
Expand Down
31 changes: 29 additions & 2 deletions gql.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
"net"
"net/http"
"os"
"strconv"
"time"

"github.com/allegro/bigcache/v3"
Expand Down Expand Up @@ -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(),
Expand All @@ -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())
}
Expand Down

0 comments on commit 5cd2231

Please sign in to comment.