feat: user service
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
package ports
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"galaxy/user/internal/domain/common"
|
||||
)
|
||||
|
||||
const (
|
||||
// DeclaredCountryChangedEventType identifies declared-country change events
|
||||
// in the shared auxiliary event stream.
|
||||
DeclaredCountryChangedEventType = "user.declared_country.changed"
|
||||
)
|
||||
|
||||
// DeclaredCountryChangedEvent stores one auxiliary declared-country change
|
||||
// notification emitted after a successful source-of-truth update.
|
||||
type DeclaredCountryChangedEvent struct {
|
||||
// UserID identifies the user whose current declared country changed.
|
||||
UserID common.UserID
|
||||
|
||||
// TraceID stores the optional OpenTelemetry trace identifier propagated
|
||||
// from the current request context.
|
||||
TraceID string
|
||||
|
||||
// DeclaredCountry stores the latest effective declared country.
|
||||
DeclaredCountry common.CountryCode
|
||||
|
||||
// UpdatedAt stores the persisted account mutation timestamp.
|
||||
UpdatedAt time.Time
|
||||
|
||||
// Source stores the machine-readable upstream mutation source.
|
||||
Source common.Source
|
||||
}
|
||||
|
||||
// Validate reports whether event is structurally complete.
|
||||
func (event DeclaredCountryChangedEvent) Validate() error {
|
||||
if err := validateEventEnvelope("declared-country changed event", event.UserID, event.UpdatedAt, event.Source, event.TraceID); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := event.DeclaredCountry.Validate(); err != nil {
|
||||
return fmt.Errorf("declared-country changed event declared country: %w", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeclaredCountryChangedPublisher publishes auxiliary declared-country change
|
||||
// notifications after source-of-truth account updates.
|
||||
type DeclaredCountryChangedPublisher interface {
|
||||
// PublishDeclaredCountryChanged propagates one committed declared-country
|
||||
// change event.
|
||||
PublishDeclaredCountryChanged(ctx context.Context, event DeclaredCountryChangedEvent) error
|
||||
}
|
||||
Reference in New Issue
Block a user