first region implementation

This commit is contained in:
Anton Martynenko
2025-10-28 15:56:16 +01:00
parent 12f3bf890a
commit bbb112940d
10 changed files with 576 additions and 0 deletions
@@ -0,0 +1,11 @@
namespace SatelliteProvider.Common.DTO;
public class RegionRequest
{
public Guid Id { get; set; }
public double Latitude { get; set; }
public double Longitude { get; set; }
public double SizeMeters { get; set; }
public int ZoomLevel { get; set; }
}
@@ -0,0 +1,14 @@
namespace SatelliteProvider.Common.DTO;
public class RegionStatus
{
public Guid Id { get; set; }
public string Status { get; set; } = string.Empty;
public string? CsvFilePath { get; set; }
public string? SummaryFilePath { get; set; }
public int TilesDownloaded { get; set; }
public int TilesReused { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime UpdatedAt { get; set; }
}
@@ -0,0 +1,11 @@
using SatelliteProvider.Common.DTO;
namespace SatelliteProvider.Common.Interfaces;
public interface IRegionRequestQueue
{
ValueTask EnqueueAsync(RegionRequest request, CancellationToken cancellationToken = default);
ValueTask<RegionRequest?> DequeueAsync(CancellationToken cancellationToken = default);
int Count { get; }
}
@@ -0,0 +1,11 @@
using SatelliteProvider.Common.DTO;
namespace SatelliteProvider.Common.Interfaces;
public interface IRegionService
{
Task<RegionStatus> RequestRegionAsync(Guid id, double latitude, double longitude, double sizeMeters, int zoomLevel);
Task<RegionStatus?> GetRegionStatusAsync(Guid id);
Task ProcessRegionAsync(Guid id, CancellationToken cancellationToken = default);
}