From 850fa0a760eab5e04a5677ac5ee01dc6cda5d499 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Thu, 12 Dec 2024 17:44:41 +0100 Subject: [PATCH] feat(barcode): Baseline for barcode caching --- go.mod | 3 +++ go.sum | 6 ++++++ main.go | 13 ++++++++++++- models/config.go | 1 + services/barcode.go | 2 ++ 5 files changed, 24 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index b99bb16..96f64aa 100644 --- a/go.mod +++ b/go.mod @@ -14,6 +14,8 @@ require ( github.com/KyleBanks/depth v1.2.1 // indirect github.com/andybalholm/brotli v1.1.1 // indirect github.com/boombuler/barcode v1.0.2 // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/go-openapi/jsonpointer v0.21.0 // indirect github.com/go-openapi/jsonreference v0.21.0 // indirect @@ -32,6 +34,7 @@ require ( github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/oxplot/papersizes v0.0.0-20181201065918-90a3a5ae1915 // indirect github.com/pelletier/go-toml/v2 v2.2.2 // indirect + github.com/redis/go-redis/v9 v9.7.0 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect diff --git a/go.sum b/go.sum index d730419..df52f6e 100644 --- a/go.sum +++ b/go.sum @@ -4,9 +4,13 @@ github.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7X github.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA= github.com/boombuler/barcode v1.0.2 h1:79yrbttoZrLGkL/oOI8hBrUKucwOL0oOjUgEguGMcJ4= github.com/boombuler/barcode v1.0.2/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= @@ -54,6 +58,8 @@ github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6 github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/redis/go-redis/v9 v9.7.0 h1:HhLSs+B6O021gwzl+locl0zEDnyNkxMtf/Z3NNBMa9E= +github.com/redis/go-redis/v9 v9.7.0/go.mod h1:f6zhXITC7JUJIlPEiBOTXxJgPLdZcA93GewI7inzyWw= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= diff --git a/main.go b/main.go index 8562d23..3487595 100644 --- a/main.go +++ b/main.go @@ -12,6 +12,7 @@ import ( "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/keyauth" "github.com/gofiber/swagger" + "github.com/redis/go-redis/v9" "github.com/spf13/viper" ) @@ -73,7 +74,17 @@ func main() { log.Fatal(err) } - barcodeGenerator := &services.DefaultBarcodeService{} + var redisClient *redis.Client + if config.RedisAddr != "" { + log.Println("Using redis at", config.RedisAddr) + redisClient = redis.NewClient(&redis.Options{ + Addr: config.RedisAddr, + }) + } + + barcodeGenerator := &services.DefaultBarcodeService{ + RedisClient: redisClient, + } staticService := &services.DefaultStaticService{ Cache: make(map[string]string), } diff --git a/models/config.go b/models/config.go index 2b69ad8..8d2313c 100644 --- a/models/config.go +++ b/models/config.go @@ -15,4 +15,5 @@ type Config struct { SponsoringBarcodePrefix string `mapstructure:"SPONSORING_BARCODEPREFIX"` CertificateFooter string `mapstructure:"CERTIFICATE_FOOTER"` GotenbergBaseUrl string `mapstructure:"GOTENBERG_BASEURL"` + RedisAddr string `mapstructure:"REDIS_ADDR"` } diff --git a/services/barcode.go b/services/barcode.go index 788b259..e0f29fe 100644 --- a/services/barcode.go +++ b/services/barcode.go @@ -10,6 +10,7 @@ import ( "github.com/boombuler/barcode/code128" "github.com/boombuler/barcode/ean" "github.com/boombuler/barcode/qr" + "github.com/redis/go-redis/v9" ) type BarcodeService interface { @@ -18,6 +19,7 @@ type BarcodeService interface { } type DefaultBarcodeService struct { + RedisClient *redis.Client } func (b *DefaultBarcodeService) GenerateBarcode(format string, content string, width int, height int) (bytes.Buffer, error) {