add profile actors
This commit is contained in:
@@ -21,6 +21,7 @@ import (
|
||||
actor "git.k6n.net/mats/go-cart-actor/pkg/actor"
|
||||
"git.k6n.net/mats/go-cart-actor/pkg/cart"
|
||||
"git.k6n.net/mats/go-cart-actor/pkg/checkout"
|
||||
"git.k6n.net/mats/go-cart-actor/pkg/profile"
|
||||
"git.k6n.net/mats/go-redis-inventory/pkg/inventory"
|
||||
"git.k6n.net/mats/slask-finder/pkg/messaging"
|
||||
amqp "github.com/rabbitmq/amqp091-go"
|
||||
@@ -49,6 +50,8 @@ type Config struct {
|
||||
DataDir string
|
||||
// CheckoutDataDir holds the checkout event logs (default "checkout-data").
|
||||
CheckoutDataDir string
|
||||
// ProfileDataDir holds the profile event logs (optional, default "" — customer endpoints disabled).
|
||||
ProfileDataDir string
|
||||
// RedisAddress / RedisPassword reach the inventory store.
|
||||
RedisAddress string
|
||||
RedisPassword string
|
||||
@@ -61,6 +64,7 @@ type App struct {
|
||||
hub *Hub
|
||||
rdb *redis.Client
|
||||
inv *inventory.RedisInventoryService
|
||||
cs *CustomerServer
|
||||
}
|
||||
|
||||
// New constructs the commerce admin: it opens the Redis inventory service, the
|
||||
@@ -93,11 +97,21 @@ func New(cfg Config) (*App, error) {
|
||||
regCheckout := checkout.NewCheckoutMutationRegistry(checkout.NewCheckoutMutationContext())
|
||||
diskStorageCheckout := actor.NewDiskStorage[checkout.CheckoutGrain](cfg.CheckoutDataDir, regCheckout)
|
||||
|
||||
// Optional customer/profile storage.
|
||||
var customerSrv *CustomerServer
|
||||
if cfg.ProfileDataDir != "" {
|
||||
_ = os.MkdirAll(cfg.ProfileDataDir, 0755)
|
||||
regProfile := profile.NewProfileMutationRegistry()
|
||||
profileStorage := actor.NewDiskStorage[profile.ProfileGrain](cfg.ProfileDataDir, regProfile)
|
||||
customerSrv = NewCustomerServer(cfg.ProfileDataDir, profileStorage)
|
||||
}
|
||||
|
||||
return &App{
|
||||
fs: NewFileServer(cfg.DataDir, cfg.CheckoutDataDir, diskStorage, diskStorageCheckout),
|
||||
hub: NewHub(),
|
||||
rdb: rdb,
|
||||
inv: inventoryService,
|
||||
cs: customerSrv,
|
||||
}, nil
|
||||
}
|
||||
|
||||
@@ -114,6 +128,10 @@ func (a *App) RegisterRoutes(mux *http.ServeMux) {
|
||||
mux.HandleFunc("/vouchers", a.fs.VoucherHandler)
|
||||
mux.HandleFunc("/promotion/{id}", a.fs.PromotionPartHandler)
|
||||
mux.HandleFunc("/ws", a.hub.ServeWS)
|
||||
// Optional customer endpoints (only mounted when ProfileDataDir is configured).
|
||||
if a.cs != nil {
|
||||
a.cs.RegisterRoutes(mux)
|
||||
}
|
||||
}
|
||||
|
||||
func (a *App) updateInventory(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
Reference in New Issue
Block a user