using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using Costasdev.ServiceViewer.Data.Gtfs.Enums; namespace Costasdev.ServiceViewer.Data.Gtfs; [Table("trips")] public class GtfsTrip { [Key] [Column("trip_id")] [MaxLength(32)] public string TripId { get; set; } = null!; [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; /// /// 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. /// [Column("block_id")] [MaxLength(32)] public string? BlockId { get; set; } /// /// Identifies a geospatial shape describing the vehicle travel path for a trip. /// /// To be implemented: will be stored as a GeoJSON file instead of database records. [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; }