mirror of
https://github.com/azaion/satellite-provider.git
synced 2026-06-21 09:41:15 +00:00
b0fffa6d42
Phase A baseline outputs from /autodev (Steps 1-5): - Problem & solution docs (_docs/00_problem, _docs/01_solution) - Codebase documentation (_docs/02_document) incl. architecture, module-layout, glossary, system-flows, baseline compliance scan - Test specs (blackbox, performance, resilience, security, resource, traceability matrix) - Test task decomposition (_docs/02_tasks/todo): AZ-285..AZ-290 - Testability refactor (_docs/04_refactoring/01-testability-refactoring): - TC-01 Move DownloadedTileInfoV2 + new ExistingTileInfo to Common.DTO - TC-02 Replace dead ISatelliteDownloader API with real signatures - TC-03 GoogleMapsDownloaderV2 implements ISatelliteDownloader - TC-04 TileService depends on ISatelliteDownloader (mockable) - TC-05 DI + endpoints use ISatelliteDownloader - Test runner scripts (scripts/run-tests.sh, run-performance-tests.sh) - Autodev state pointer (_docs/_autodev_state.md) Prepares the codebase for AZ-285..AZ-290 unit/integration test work. Co-authored-by: Cursor <cursoragent@cursor.com>
1.9 KiB
1.9 KiB
Module: Services/TileService
Purpose
Orchestrates tile downloading and persistence. Bridges the downloader (Google Maps) with the tile repository (PostgreSQL), handling cache checks, entity creation, and metadata mapping.
Public Interface
TileService (implements ITileService)
DownloadAndStoreTilesAsync(double lat, double lon, double sizeMeters, int zoomLevel, CancellationToken) → Task<List<TileMetadata>>:- Queries existing tiles in the region from the repository (filtered to current year's version)
- Calls
GoogleMapsDownloaderV2.GetTilesWithMetadataAsyncwith existing tiles to skip - Creates
TileEntityfor each newly downloaded tile and inserts via repository (upsert) - Returns combined list of existing + new tile metadata
GetTileAsync(Guid id) → Task<TileMetadata?>: single tile lookupGetTilesByRegionAsync(double lat, double lon, double sizeMeters, int zoomLevel) → Task<IEnumerable<TileMetadata>>: query tiles in a region
Internal Logic
- Version is
DateTime.UtcNow.Year— tiles are considered fresh for the current calendar year MapToMetadata(TileEntity) → TileMetadata: entity-to-DTO mapping (static helper)- Tile size hardcoded to 256 pixels, image type "jpg"
MapsVersionformatted as"downloaded_{date}"
Dependencies
GoogleMapsDownloaderV2(concrete class, not interface)ITileRepositorySatelliteProvider.Common.DTO— GeoPoint, TileMetadataSatelliteProvider.DataAccess.Models— TileEntity
Consumers
RegionService.ProcessRegionAsync— downloads and retrieves tiles for a region
Data Models
Transforms between TileEntity (persistence) and TileMetadata (DTO).
Configuration
None directly; relies on GoogleMapsDownloaderV2's configuration.
External Integrations
Indirect: Google Maps (via downloader), PostgreSQL (via repository).
Security
None.
Tests
No dedicated tests.