using MediatR;

namespace StorageService.Domain.AggregatesModel.FileAggregate;

/// <summary>
/// EN: Domain event raised when a file is uploaded.
/// VI: Domain event được phát khi file được upload.
/// </summary>
public record FileUploadedDomainEvent(
    Guid FileId,
    string FileName,
    string UserId,
    long FileSizeBytes
) : INotification;

/// <summary>
/// EN: Domain event raised when a file is deleted.
/// VI: Domain event được phát khi file bị xóa.
/// </summary>
public record FileDeletedDomainEvent(
    Guid FileId,
    string UserId,
    long FileSizeBytes
) : INotification;

/// <summary>
/// EN: Domain event raised when user quota is updated.
/// VI: Domain event được phát khi quota user được cập nhật.
/// </summary>
public record UserQuotaUpdatedDomainEvent(
    string UserId,
    long UsedStorageBytes,
    int FileCount
) : INotification;
