Slide 30
Slide 30 text
package command
// ίϚϯυ: ૢ࡞ͷ໊લͱͦΕ࣮ߦ͢ΔͨΊʹඞཁͳೖྗσʔλΛ࣋ͭ
type DeactivateSubscriptionCommand struct {
SubscriptionID uuid.UUID
}
// ίϚϯυϓϩηοαʔ: ूʹίϚϯυॲཧΛҕৡ͢Δ
func (p DeactivateSubscriptionCommandProcessor) Exec(ctx context.Context, command DeactivateSubscriptionCommand)
(subscription.Deactivated, error) {
aSubscription, err := p.SubscriptionRepo.Load(ctx, command.SubscriptionID)
if err != nil {
return subscription.Deactivated{}, fmt.Errorf("subscription.Repository.Load: %w", err)
}
event, err := aSubscription.Deactivate(time.Now())
if err != nil {
return subscription.Deactivated{}, fmt.Errorf("subscription.Subscription.Deactivate: %w", err)
}
if err := p.SubscriptionRepo.Store(ctx, event); err != nil {
return subscription.Deactivated{}, fmt.Errorf("subscription.Repository.Store: %w", err)
}
if err := p.EventPublisher.Publish(ctx, event); err != nil {
return subscription.Deactivated{}, fmt.Errorf("EventPublisher.Publish: %w", err)
}
return event, nil
}
*NQMFNFOUJOH$PNNBOE