using Enmarcha.Experimental.ServiceViewer.Data.Gtfs; using Enmarcha.Experimental.ServiceViewer.Data.Gtfs.Enums; using Microsoft.EntityFrameworkCore; namespace Enmarcha.Experimental.ServiceViewer.Data; public class AppDbContext : DbContext { public AppDbContext(DbContextOptions options) : base(options) { } protected override void OnModelCreating(ModelBuilder modelBuilder) { // Route -> Agency modelBuilder.Entity() .HasOne(r => r.Agency) .WithMany() .HasForeignKey(r => new { r.AgencyId, r.FeedId }) .HasPrincipalKey(a => new { a.Id, a.FeedId }); // Trip -> Route modelBuilder.Entity() .HasOne(t => t.Route) .WithMany() .HasForeignKey(t => new { t.RouteId, t.FeedId }) .HasPrincipalKey(a => new { a.Id, a.FeedId }); // Relación StopTimes -> Trip modelBuilder.Entity() .HasOne(st => st.GtfsTrip) .WithMany() .HasForeignKey(st => new { st.TripId, st.FeedId }) .HasPrincipalKey(a => new { a.Id, a.FeedId }); // Relación StopTimes -> Stop modelBuilder.Entity() .HasOne(st => st.GtfsStop) .WithMany() .HasForeignKey(st => new { st.StopId, st.FeedId }) .HasPrincipalKey(a => new { a.Id, a.FeedId }); modelBuilder.Entity() .Property(t => t.TripWheelchairAccessible) .HasDefaultValue(TripWheelchairAccessible.Empty); modelBuilder.Entity() .Property(t => t.TripBikesAllowed) .HasDefaultValue(TripBikesAllowed.Empty); } public DbSet Agencies { get; set; } public DbSet Calendars { get; set; } public DbSet CalendarDates { get; set; } public DbSet Routes { get; set; } public DbSet Stops { get; set; } public DbSet StopTimes { get; set; } public DbSet Trips { get; set; } }