feat: game lobby service
This commit is contained in:
@@ -11,10 +11,12 @@ import (
|
||||
|
||||
"galaxy/user/internal/adapters/local"
|
||||
"galaxy/user/internal/adapters/redis/domainevents"
|
||||
"galaxy/user/internal/adapters/redis/lifecycleevents"
|
||||
"galaxy/user/internal/adapters/redis/userstore"
|
||||
"galaxy/user/internal/adminapi"
|
||||
"galaxy/user/internal/api/internalhttp"
|
||||
"galaxy/user/internal/config"
|
||||
"galaxy/user/internal/service/accountdeletion"
|
||||
"galaxy/user/internal/service/adminusers"
|
||||
"galaxy/user/internal/service/authdirectory"
|
||||
"galaxy/user/internal/service/entitlementsvc"
|
||||
@@ -128,12 +130,27 @@ func NewRuntime(ctx context.Context, cfg config.Config, logger *slog.Logger) (*R
|
||||
return cleanupOnError(fmt.Errorf("new user-service runtime: %w", err))
|
||||
}
|
||||
|
||||
lifecycleEventPublisher, err := lifecycleevents.New(lifecycleevents.Config{
|
||||
Addr: cfg.Redis.Addr,
|
||||
Username: cfg.Redis.Username,
|
||||
Password: cfg.Redis.Password,
|
||||
DB: cfg.Redis.DB,
|
||||
TLSEnabled: cfg.Redis.TLSEnabled,
|
||||
Stream: cfg.Redis.LifecycleEventsStream,
|
||||
StreamMaxLen: cfg.Redis.LifecycleEventsStreamMaxLen,
|
||||
OperationTimeout: cfg.Redis.OperationTimeout,
|
||||
})
|
||||
if err != nil {
|
||||
return cleanupOnError(fmt.Errorf("new user-service runtime: redis lifecycle-event publisher: %w", err))
|
||||
}
|
||||
runtime.cleanupFns = append(runtime.cleanupFns, lifecycleEventPublisher.Close)
|
||||
|
||||
if err := pingDependency(ctx, "redis lifecycle-event publisher", lifecycleEventPublisher); err != nil {
|
||||
return cleanupOnError(fmt.Errorf("new user-service runtime: %w", err))
|
||||
}
|
||||
|
||||
clock := local.Clock{}
|
||||
idGenerator := local.IDGenerator{}
|
||||
raceNamePolicy, err := local.NewRaceNamePolicy()
|
||||
if err != nil {
|
||||
return cleanupOnError(fmt.Errorf("new user-service runtime: race-name policy: %w", err))
|
||||
}
|
||||
|
||||
componentLogger := func(component string) *slog.Logger {
|
||||
return logger.With("component", component)
|
||||
@@ -147,7 +164,6 @@ func NewRuntime(ctx context.Context, cfg config.Config, logger *slog.Logger) (*R
|
||||
store,
|
||||
clock,
|
||||
idGenerator,
|
||||
raceNamePolicy,
|
||||
componentLogger("authdirectory"),
|
||||
telemetryRuntime,
|
||||
domainEventPublisher,
|
||||
@@ -233,7 +249,6 @@ func NewRuntime(ctx context.Context, cfg config.Config, logger *slog.Logger) (*R
|
||||
store.Sanctions(),
|
||||
store.Limits(),
|
||||
clock,
|
||||
raceNamePolicy,
|
||||
componentLogger("selfservice"),
|
||||
telemetryRuntime,
|
||||
domainEventPublisher,
|
||||
@@ -262,9 +277,9 @@ func NewRuntime(ctx context.Context, cfg config.Config, logger *slog.Logger) (*R
|
||||
if err != nil {
|
||||
return cleanupOnError(fmt.Errorf("new user-service runtime: admin get-user-by-email: %w", err))
|
||||
}
|
||||
getUserByRaceName, err := adminusers.NewByRaceNameGetter(store.Accounts(), entitlementReader, store.Sanctions(), store.Limits(), clock)
|
||||
getUserByUserName, err := adminusers.NewByUserNameGetter(store.Accounts(), entitlementReader, store.Sanctions(), store.Limits(), clock)
|
||||
if err != nil {
|
||||
return cleanupOnError(fmt.Errorf("new user-service runtime: admin get-user-by-race-name: %w", err))
|
||||
return cleanupOnError(fmt.Errorf("new user-service runtime: admin get-user-by-user-name: %w", err))
|
||||
}
|
||||
listUsers, err := adminusers.NewLister(store.Accounts(), entitlementReader, store.Sanctions(), store.Limits(), clock, store)
|
||||
if err != nil {
|
||||
@@ -294,10 +309,21 @@ func NewRuntime(ctx context.Context, cfg config.Config, logger *slog.Logger) (*R
|
||||
componentLogger("policysvc"),
|
||||
telemetryRuntime,
|
||||
domainEventPublisher,
|
||||
lifecycleEventPublisher,
|
||||
)
|
||||
if err != nil {
|
||||
return cleanupOnError(fmt.Errorf("new user-service runtime: apply sanction service: %w", err))
|
||||
}
|
||||
deleteUser, err := accountdeletion.NewServiceWithObservability(
|
||||
store.Accounts(),
|
||||
clock,
|
||||
lifecycleEventPublisher,
|
||||
componentLogger("accountdeletion"),
|
||||
telemetryRuntime,
|
||||
)
|
||||
if err != nil {
|
||||
return cleanupOnError(fmt.Errorf("new user-service runtime: delete user service: %w", err))
|
||||
}
|
||||
removeSanction, err := policysvc.NewRemoveSanctionServiceWithObservability(
|
||||
store.Accounts(),
|
||||
store.Sanctions(),
|
||||
@@ -358,7 +384,7 @@ func NewRuntime(ctx context.Context, cfg config.Config, logger *slog.Logger) (*R
|
||||
UpdateMySettings: settingsUpdater,
|
||||
GetUserByID: getUserByID,
|
||||
GetUserByEmail: getUserByEmail,
|
||||
GetUserByRaceName: getUserByRaceName,
|
||||
GetUserByUserName: getUserByUserName,
|
||||
ListUsers: listUsers,
|
||||
GetUserEligibility: userEligibility,
|
||||
SyncDeclaredCountry: syncDeclaredCountry,
|
||||
@@ -369,6 +395,7 @@ func NewRuntime(ctx context.Context, cfg config.Config, logger *slog.Logger) (*R
|
||||
RemoveSanction: removeSanction,
|
||||
SetLimit: setLimit,
|
||||
RemoveLimit: removeLimit,
|
||||
DeleteUser: deleteUser,
|
||||
Logger: logger.With("component", "internal_http"),
|
||||
Telemetry: telemetryRuntime,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user