# Module: DataAccess/Models ## Purpose Database entity classes that map directly to PostgreSQL tables via Dapper. Property names use PascalCase; column mapping is done with SQL aliases in repository queries. ## Public Interface ### TileEntity Maps to `tiles` table. - `Id` (Guid), `TileZoom` (int), `TileX` (int), `TileY` (int) - `Latitude`, `Longitude` (double), `TileSizeMeters` (double), `TileSizePixels` (int) - `ImageType` (string), `MapsVersion` (string?), `Version` (int) - `FilePath` (string), `CreatedAt`, `UpdatedAt` (DateTime) ### RegionEntity Maps to `regions` table. - `Id` (Guid), `Latitude`, `Longitude` (double), `SizeMeters` (double) - `ZoomLevel` (int), `Status` (string: "queued"/"processing"/"completed"/"failed") - `CsvFilePath`, `SummaryFilePath` (string?) - `TilesDownloaded`, `TilesReused` (int), `StitchTiles` (bool) - `CreatedAt`, `UpdatedAt` (DateTime) ### RouteEntity Maps to `routes` table. - `Id` (Guid), `Name` (string), `Description` (string?) - `RegionSizeMeters` (double), `ZoomLevel` (int) - `TotalDistanceMeters` (double), `TotalPoints` (int) - `RequestMaps`, `MapsReady`, `CreateTilesZip` (bool) - `CsvFilePath`, `SummaryFilePath`, `StitchedImagePath`, `TilesZipPath` (string?) - `CreatedAt`, `UpdatedAt` (DateTime) ### RoutePointEntity Maps to `route_points` table. - `Id` (Guid), `RouteId` (Guid), `SequenceNumber` (int) - `Latitude`, `Longitude` (double), `PointType` (string) - `SegmentIndex` (int), `DistanceFromPrevious` (double?) - `CreatedAt` (DateTime) ## Internal Logic Plain POCOs with no logic. ## Dependencies None. ## Consumers - All repository implementations (TileRepository, RegionRepository, RouteRepository) - `TileService` — creates `TileEntity` instances for persistence - `RegionService` — creates/updates `RegionEntity` - `RouteService` — creates `RouteEntity` and `RoutePointEntity` - `RouteProcessingService` — reads entities from repositories - `GoogleMapsDownloaderV2.GetTilesWithMetadataAsync` — accepts `IEnumerable` to check existing tiles ## Data Models These ARE the data model. ## Configuration None. ## External Integrations None. ## Security None. ## Tests No dedicated tests.