// Copyright (c) HelloShop Corporation. All rights reserved.
// See the license file in the project root for more information.

using Dapr;
using System.Text.Json.Serialization;

namespace HelloShop.EventBus.Dapr
{
    public class DaprCloudEvent<TData>(TData data) : CloudEvent<TData>(data)
    {
        /// <summary>
        /// CloudEvent 'pubsubname' attribute.
        /// </summary>
        [JsonPropertyName("pubsubname")]
        public required string PubSubName { get; init; }

        /// <summary>
        /// CloudEvent 'topic' attribute.
        /// </summary>
        [JsonPropertyName("topic")]
        public required string Topic { get; init; }

        /// <summary>
        /// CloudEvent 'time' attribute.
        /// </summary>
        [JsonPropertyName("time")]
        public required DateTimeOffset Time { get; init; }
    }
}