package room

import "context"

// EventHandler 是 room outbox 事件进入 activity-service 后的处理边界。
// 消费来源可以是 MySQL outbox 或 MQ，但处理侧必须保持幂等。
type EventHandler interface {
	HandleRoomEvent(ctx context.Context, eventID string, eventType string, payload []byte) error
}

// Consumer 描述活动服务的房间事件消费骨架。
type Consumer struct {
	handler EventHandler
}

// NewConsumer 创建房间事件消费者。
func NewConsumer(handler EventHandler) *Consumer {
	return &Consumer{handler: handler}
}

// Handle 把外部事件交给幂等 handler。
func (c *Consumer) Handle(ctx context.Context, eventID string, eventType string, payload []byte) error {
	if c == nil || c.handler == nil {
		return nil
	}

	return c.handler.HandleRoomEvent(ctx, eventID, eventType, payload)
}
