aboutsummaryrefslogtreecommitdiff
path: root/src/Costasdev.Busurbano.ServiceViewer/Data/AppDbContext.cs
blob: 55a5a0830d6f717ccc4379862119e7423eaaf1f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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; }
}