-
Notifications
You must be signed in to change notification settings - Fork 1
/
module.go
58 lines (53 loc) · 1.37 KB
/
module.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package redis
import (
"flamingo.me/dingo"
"flamingo.me/flamingo-commerce-contrib/cart/redis/infrastructure"
cartInfrastructure "flamingo.me/flamingo-commerce/v3/cart/infrastructure"
"flamingo.me/flamingo/v3/core/healthcheck/domain/healthcheck"
)
type (
// Module for a cart storage using redis
Module struct {
enabled bool
}
)
func (m *Module) Inject(
config *struct {
Enabled bool `inject:"config:commerce.contrib.cart.redis.enabled"`
}) {
if config != nil {
m.enabled = config.Enabled
}
}
// Configure module
func (m *Module) Configure(injector *dingo.Injector) {
if m.enabled {
injector.Bind(new(infrastructure.CartSerializer)).To(new(infrastructure.GobSerializer))
injector.Override(new(cartInfrastructure.CartStorage), "").To(new(infrastructure.RedisStorage)).AsEagerSingleton()
injector.BindMap(new(healthcheck.Status), "cart.storage.redis").To(new(infrastructure.RedisStorage))
}
}
// CueConfig defines the cart module configuration
func (*Module) CueConfig() string {
return `
commerce: {
contrib: {
cart: {
redis: {
enabled: bool | *true
keyPrefix: string | *"cart:"
ttl: {
guest: string | *"24h"
customer: string | *"168h"
}
address: string | *"127.0.0.1:6379"
network: "unix" | *"tcp"
password: string | *""
idleConnections: number | *10
database: float | int | *0
tls: bool | *false
}
}
}
}`
}