aboutsummaryrefslogtreecommitdiff
path: root/src/Costasdev.Busurbano.ServiceViewer/Data/Gtfs/GtfsTrip.cs
blob: 3614120051089408a46c347d632d3d4a3829c1b8 (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
53
54
55
56
57
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Costasdev.ServiceViewer.Data.Gtfs.Enums;
using Microsoft.EntityFrameworkCore;

namespace Costasdev.ServiceViewer.Data.Gtfs;

[Table("gtfs_trips")]
[PrimaryKey(nameof(Id), nameof(FeedId))]
public class GtfsTrip
{
    [Column("trip_id")] [MaxLength(32)] public string Id { get; set; } = null!;

    [Column("feed_id")] public int FeedId { get; set; }
    [ForeignKey(nameof(FeedId))] public required Feed Feed { get; set; }

    [Column("route_id")]
    [MaxLength(32)]
    [ForeignKey(nameof(Route))]
    public string RouteId { get; set; } = null!;

    [ForeignKey(nameof(RouteId))] public GtfsRoute Route { get; set; } = null!;

    [Column("service_id")] [MaxLength(32)] public string ServiceId { get; set; } = null!;

    [Column("trip_headsign")]
    [MaxLength(255)]
    public string? TripHeadsign { get; set; }

    [Column("trip_short_name")]
    [MaxLength(255)]
    public string? TripShortName { get; set; }

    [Column("direction_id")] public DirectionId DirectionId { get; set; } = DirectionId.Outbound;

    /// <summary>
    /// Identifies the block to which the trip belongs. A block consists of a single trip or many
    /// sequential trips made using the same vehicle, defined by shared service days and block_id.
    /// A block_id may have trips with different service days, making distinct blocks.
    /// </summary>
    [Column("block_id")]
    [MaxLength(32)]
    public string? BlockId { get; set; }

    /// <summary>
    /// Identifies a geospatial shape describing the vehicle travel path for a trip.
    /// </summary>
    /// <remarks>To be implemented: will be stored as a GeoJSON file instead of database records.</remarks>
    [Column("shape_id")]
    [MaxLength(32)]
    public string? ShapeId { get; set; }

    [Column("trip_wheelchair_accessible")]
    public TripWheelchairAccessible TripWheelchairAccessible { get; set; } = TripWheelchairAccessible.Empty;

    [Column("trip_bikes_allowed")] public TripBikesAllowed TripBikesAllowed { get; set; } = TripBikesAllowed.Empty;
}