using Jiaowu.Api.Domain.Common;

namespace Jiaowu.Api.Domain.System;

public enum AppUpdatePlatform
{
    Android,
    Ios
}

public enum AppUpdateChannel
{
    Production,
    Staging
}

public enum AppUpdateReleaseStatus
{
    Draft,
    Published,
    Archived
}

public sealed class AppUpdateRelease : EntityBase
{
    public AppUpdatePlatform Platform { get; set; }
    public AppUpdateChannel Channel { get; set; }
    public required string Version { get; set; }
    public required string NativeVersion { get; set; }
    public AppUpdateReleaseStatus Status { get; set; } =
        AppUpdateReleaseStatus.Draft;
    public string? ReleaseNotes { get; set; }
    public required string FileName { get; set; }
    public long FileSize { get; set; }
    public required string Sha256 { get; set; }
    public required byte[] BundleContent { get; set; }
    public required string CreatedByUserName { get; set; }
    public string? PublishedByUserName { get; set; }
    public DateTime? PublishedAt { get; set; }
}
