MapSyncTask.cs 1.32 KB
using Rcs.Application.Services.Sync;
using Rcs.Domain.Entities;

namespace Rcs.Infrastructure.Services.Sync;

/// <summary>
/// 地图同步任务
/// @author zzy
/// </summary>
public class MapSyncTask : ISyncTask
{
    public string TaskId { get; set; } = string.Empty;
    public string TaskType { get; set; } = string.Empty;
    public bool AutoSync { get; set; }
    public int SyncIntervalSeconds { get; set; }
    public string? SyncUrl { get; set; }
    public Guid MapId { get; set; }

    public static MapSyncTask FromMapResource(Map map) => new()
    {
        TaskId = $"MapResource_{map.MapId}",
        TaskType = SyncTaskTypes.MapResource,
        AutoSync = map.ResourceAutoSync,
        SyncIntervalSeconds = map.ResourceSyncInterval,
        SyncUrl = map.ResourceUrl,
        MapId = map.MapId
    };

    public static MapSyncTask FromMapPoints(Map map) => new()
    {
        TaskId = $"MapPoints_{map.MapId}",
        TaskType = SyncTaskTypes.MapPoints,
        AutoSync = map.PointsAutoSync,
        SyncIntervalSeconds = map.PointsSyncInterval,
        SyncUrl = map.PointsUrl,
        MapId = map.MapId
    };
}

/// <summary>
/// 同步任务类型常量
/// @author zzy
/// </summary>
public static class SyncTaskTypes
{
    public const string MapResource = "MapResource";
    public const string MapPoints = "MapPoints";
}