aboutsummaryrefslogtreecommitdiff
path: root/src/Costasdev.Busurbano.ServiceViewer/Data/AppDbContext.cs
diff options
context:
space:
mode:
authorAriel Costas Guerrero <ariel@costas.dev>2025-10-21 15:34:24 +0200
committerAriel Costas Guerrero <ariel@costas.dev>2025-12-12 10:24:53 +0100
commit661cccc2da9a6c32b7b56c60313787282a9084ea (patch)
tree8176720aa99b80281a8351ae74170238c50b59cc /src/Costasdev.Busurbano.ServiceViewer/Data/AppDbContext.cs
parented023a4b5ee257c0c367357b6d83f9778e2cf536 (diff)
Begin implementing
Diffstat (limited to 'src/Costasdev.Busurbano.ServiceViewer/Data/AppDbContext.cs')
-rw-r--r--src/Costasdev.Busurbano.ServiceViewer/Data/AppDbContext.cs52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/Costasdev.Busurbano.ServiceViewer/Data/AppDbContext.cs b/src/Costasdev.Busurbano.ServiceViewer/Data/AppDbContext.cs
new file mode 100644
index 0000000..55a5a08
--- /dev/null
+++ b/src/Costasdev.Busurbano.ServiceViewer/Data/AppDbContext.cs
@@ -0,0 +1,52 @@
+using Costasdev.ServiceViewer.Data.Gtfs;
+using Costasdev.ServiceViewer.Data.Gtfs.Enums;
+using Microsoft.EntityFrameworkCore;
+
+namespace Costasdev.ServiceViewer.Data;
+
+public class AppDbContext : DbContext
+{
+ public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
+ {
+ }
+
+ protected override void OnModelCreating(ModelBuilder modelBuilder)
+ {
+ // Relación Trip -> StopTimes (cascade delete)
+ modelBuilder.Entity<GtfsTrip>()
+ .HasMany<GtfsStopTime>()
+ .WithOne(st => st.GtfsTrip)
+ .HasForeignKey(st => st.TripId)
+ .OnDelete(DeleteBehavior.Cascade);
+
+ // Relación Stop -> StopTimes (cascade delete)
+ modelBuilder.Entity<GtfsStop>()
+ .HasMany<GtfsStopTime>()
+ .WithOne(st => st.GtfsStop)
+ .HasForeignKey(st => st.StopId)
+ .OnDelete(DeleteBehavior.Cascade);
+
+ // Relación Route -> Trips (cascade delete)
+ modelBuilder.Entity<GtfsRoute>()
+ .HasMany<GtfsTrip>()
+ .WithOne(t => t.Route)
+ .HasForeignKey(t => t.RouteId)
+ .OnDelete(DeleteBehavior.Cascade);
+
+ modelBuilder.Entity<GtfsTrip>()
+ .Property(t => t.TripWheelchairAccessible)
+ .HasDefaultValue(TripWheelchairAccessible.Empty);
+
+ modelBuilder.Entity<GtfsTrip>()
+ .Property(t => t.TripBikesAllowed)
+ .HasDefaultValue(TripBikesAllowed.Empty);
+ }
+
+ public DbSet<GtfsAgency> Agencies { get; set; }
+ public DbSet<GtfsCalendar> Calendars { get; set; }
+ public DbSet<GtfsCalendarDate> CalendarDates { get; set; }
+ public DbSet<GtfsRoute> Routes { get; set; }
+ public DbSet<GtfsStop> Stops { get; set; }
+ public DbSet<GtfsStopTime> StopTimes { get; set; }
+ public DbSet<GtfsTrip> Trips { get; set; }
+}