Define CIF types

This commit is contained in:
Fred Boniface 2024-03-31 21:45:34 +01:00
parent f85646ac1a
commit 8d201b006d
2 changed files with 102 additions and 1 deletions

View File

@ -13,7 +13,7 @@ type Stop struct {
Tiploc string `json:"tiploc,omitempty"`
}
type Service struct {
type Service struct { // Consider including catering, train class etc. here too.
TransactionType string `json:"transactionType,omitempty"`
StpIndicator string `json:"stpIndicator,omitempty"`
Vstp bool `json:"vstp"`

101
pkg/upstreamApi/cif.go Normal file
View File

@ -0,0 +1,101 @@
package upstreamApi
import "time"
// Defines the first JSON line of a CIF file, containing metadata
type JsonTimetableV1 struct {
Classification string `json:"classification"`
Timestamp int64 `json:"timestamp"`
Owner string `json:"owner"`
Sender TimetableSender `json:"Sender"`
Metadata TimetableMetadata `json:"Metadata"`
}
// Part of the JsonTimetableV1 type
type TimetableSender struct {
Organisation string `json:"organisation"`
Application string `json:"application"`
Component string `json:"component"`
}
// Part of the JsonTimetableV1 type
type TimetableMetadata struct {
Type string `json:"type"`
Sequence int64 `json:"sequence"`
}
// Defines the JsonAssociation lines of a CIF File
type JsonAssociationV1 struct {
TransactionType string `json:"transaction_type"`
MainTrainUid string `json:"main_train_uid"`
AssocTrainUid string `json:"assoc_train_uid"`
AssocStartDate time.Time `json:"assoc_start_date"`
AssocEndDate time.Time `json:"assoc_end_date"`
Location string `json:"location"`
BaseLocationSuffix string `json:"base_location_suffix"`
DiagramType string `json:"diagram_type"`
AssocDays string `json:"assoc_days"`
Category string `json:"category"`
CIFSTPIndicator string `json:"CIF_stp_indicator"`
DateIndicator string `json:"date_indicator"`
}
// Defined a schedule entry from a CIF File
type JsonScheduleV1 struct {
CifBankHolidayRunning string `json:"CIF_bank_holiday_running"`
CifStpIndicator string `json:"CIF_stp_indicator"`
CifTrainUid string `json:"CIF_train_uid"`
ApplicableTimetable string `json:"applicable_timetable"`
AtocCode string `json:"atoc_code"`
NewScheduleSegment ScheduleNewScheduleSegment `json:"new_schedule_segment"`
ScheduleDaysRun string `json:"schedule_days_run"`
ScheduleStartDate string `json:"schedule_start_date"`
ScheduleEndDate string `json:"schedule_end_date"`
ScheduleSegment CifScheduleSegment `json:"schedule_segment"`
}
// Part of the JsonScheduleV1 type
type ScheduleNewScheduleSegment struct {
TractionClass string `json:"traction_class"`
UidCode string `json:"uid_code"`
}
// Part of the JsonScheduleV1 type
type CifScheduleSegment struct {
SignallingId string `json:"signalling_id"`
CifTrainCategory string `json:"CIF_train_category"`
CifHeadcode string `json:"CIF_headcode"`
CifCourseIndicator string `json:"CIF_course_indicator"`
CifTrainServiceCode string `json:"CIF_train_service_code"`
CifBusinessSector string `json:"CIF_business_sector"`
CifPowerType string `json:"CIF_power_type"`
CifTimingLoad string `json:"CIF_timing_load"`
CifSpeed string `json:"CIF_speed"`
CifOperatingCharacteristics string `json:"CIF_operating_characteristics"`
CifTrainClass string `json:"CIF_train_class"`
CifSleepers string `json:"CIF_sleepers"`
CifReservations string `json:"CIF_reservations"`
CifConnectionIndicator string `json:"CIF_connection_indicator"`
CifCateringCode string `json:"CIF_catering_code"`
CifServiceBranding string `json:"CIF_service_branding"`
ScheduleLocation []CifScheduleLocation `json:"schedule_location"`
}
// Part of the CifScheduleSegment type
type CifScheduleLocation struct {
LocationType string `json:"location_type"`
RecordIdentity string `json:"record_identity"`
TiplocCode string `json:"tiploc_code"`
TiplocInstance string `json:"tiploc_instance"`
Arrival string `json:"arrival"`
PublicArrival string `json:"public_arrival"`
Departure string `json:"departure"`
PublicDeparture string `json:"public_departure"`
Pass string `json:"pass"`
Path string `json:"path"`
Platform string `json:"platform"`
Line string `json:"line"`
EngineeringAllowance string `json:"engineering_allowance"`
PathingAllowance string `json:"pathing_allowance"`
PerformanceAllowance string `json:"performance_allowance"`
}