Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions adapters/direct/reader.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ type Reader struct {
TimeframeList []gtfs.Timeframe
NetworkList []gtfs.Network
RouteNetworkList []gtfs.RouteNetwork
FareLegJoinRuleList []gtfs.FareLegJoinRule
OtherList []tt.Entity
}

Expand Down Expand Up @@ -432,3 +433,14 @@ func (mr *Reader) RouteNetworks() chan gtfs.RouteNetwork {
}()
return out
}

func (mr *Reader) FareLegJoinRules() chan gtfs.FareLegJoinRule {
out := make(chan gtfs.FareLegJoinRule, bufferSize)
go func() {
for _, ent := range mr.FareLegJoinRuleList {
out <- ent
}
close(out)
}()
return out
}
4 changes: 4 additions & 0 deletions adapters/empty/reader.go
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,10 @@ func (mr *Reader) RiderCategories() chan gtfs.RiderCategory {
return readNullEntities[gtfs.RiderCategory](mr)
}

func (mr *Reader) FareLegJoinRules() chan gtfs.FareLegJoinRule {
return readNullEntities[gtfs.FareLegJoinRule](mr)
}

func readNullEntities[T any](reader *Reader) chan T {
out := make(chan T, bufferSize)
go func() {
Expand Down
4 changes: 4 additions & 0 deletions adapters/multireader/reader.go
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,10 @@ func (mr *Reader) RouteNetworks() chan gtfs.RouteNetwork {
return readEntities(mr, func(r adapters.Reader) chan gtfs.RouteNetwork { return r.RouteNetworks() }, setFv[*gtfs.RouteNetwork])
}

func (mr *Reader) FareLegJoinRules() chan gtfs.FareLegJoinRule {
return readEntities(mr, func(r adapters.Reader) chan gtfs.FareLegJoinRule { return r.FareLegJoinRules() }, setFv[*gtfs.FareLegJoinRule])
}

type canSetFV interface {
SetFeedVersionID(int)
}
Expand Down
34 changes: 34 additions & 0 deletions gtfs/fare_leg_join_rule.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package gtfs

import (
"github.com/interline-io/transitland-lib/tt"
)

// FareLegJoinRule fare_leg_join_rules.txt
type FareLegJoinRule struct {
FromNetworkID tt.String `csv:",required" target:"networks.txt"`
ToNetworkID tt.String `csv:",required" target:"networks.txt"`
FromStopID tt.String `target:"stops.txt"`
ToStopID tt.String `target:"stops.txt"`
tt.BaseEntity
}

// EntityID returns the ID or composite key.
func (ent *FareLegJoinRule) EntityID() string {
return entID(ent.ID, ent.FromNetworkID.Val+"_"+ent.ToNetworkID.Val+"_"+ent.FromStopID.Val+"_"+ent.ToStopID.Val)
}

// EntityKey returns the GTFS identifier.
func (ent *FareLegJoinRule) EntityKey() string {
return ent.FromNetworkID.Val + "_" + ent.ToNetworkID.Val + "_" + ent.FromStopID.Val + "_" + ent.ToStopID.Val
}

// Filename fare_leg_join_rules.txt
func (ent *FareLegJoinRule) Filename() string {
return "fare_leg_join_rules.txt"
}

// TableName gtfs_fare_leg_join_rules
func (ent *FareLegJoinRule) TableName() string {
return "gtfs_fare_leg_join_rules"
}
1 change: 1 addition & 0 deletions gtfs/gtfs.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,5 @@ type Reader interface {
Timeframes() chan Timeframe
Networks() chan Network
RouteNetworks() chan RouteNetwork
FareLegJoinRules() chan FareLegJoinRule
}
22 changes: 22 additions & 0 deletions schema/postgres/migrations/20211206202419_init.up.pgsql
Original file line number Diff line number Diff line change
Expand Up @@ -724,6 +724,23 @@ CREATE SEQUENCE public.gtfs_fare_rules_id_seq
NO MAXVALUE
CACHE 1;
ALTER SEQUENCE public.gtfs_fare_rules_id_seq OWNED BY public.gtfs_fare_rules.id;
CREATE TABLE public.gtfs_fare_leg_join_rules (
id bigint NOT NULL,
feed_version_id bigint NOT NULL,
from_network_id character varying NOT NULL,
to_network_id character varying NOT NULL,
from_stop_id character varying,
to_stop_id character varying,
created_at timestamp without time zone DEFAULT now() NOT NULL,
updated_at timestamp without time zone DEFAULT now() NOT NULL
);
CREATE SEQUENCE public.gtfs_fare_leg_join_rules_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER SEQUENCE public.gtfs_fare_leg_join_rules_id_seq OWNED BY public.gtfs_fare_leg_join_rules.id;
CREATE TABLE public.gtfs_feed_infos (
id bigint NOT NULL,
feed_publisher_name character varying NOT NULL,
Expand Down Expand Up @@ -1453,6 +1470,7 @@ ALTER TABLE ONLY public.gtfs_calendar_dates ALTER COLUMN id SET DEFAULT nextval(
ALTER TABLE ONLY public.gtfs_calendars ALTER COLUMN id SET DEFAULT nextval('public.gtfs_calendars_id_seq'::regclass);
ALTER TABLE ONLY public.gtfs_fare_attributes ALTER COLUMN id SET DEFAULT nextval('public.gtfs_fare_attributes_id_seq'::regclass);
ALTER TABLE ONLY public.gtfs_fare_rules ALTER COLUMN id SET DEFAULT nextval('public.gtfs_fare_rules_id_seq'::regclass);
ALTER TABLE ONLY public.gtfs_fare_leg_join_rules ALTER COLUMN id SET DEFAULT nextval('public.gtfs_fare_leg_join_rules_id_seq'::regclass);
ALTER TABLE ONLY public.gtfs_feed_infos ALTER COLUMN id SET DEFAULT nextval('public.gtfs_feed_infos_id_seq'::regclass);
ALTER TABLE ONLY public.gtfs_frequencies ALTER COLUMN id SET DEFAULT nextval('public.gtfs_frequencies_id_seq'::regclass);
ALTER TABLE ONLY public.gtfs_levels ALTER COLUMN id SET DEFAULT nextval('public.gtfs_levels_id_seq'::regclass);
Expand Down Expand Up @@ -1539,6 +1557,8 @@ ALTER TABLE ONLY public.gtfs_fare_attributes
ADD CONSTRAINT gtfs_fare_attributes_pkey PRIMARY KEY (id);
ALTER TABLE ONLY public.gtfs_fare_rules
ADD CONSTRAINT gtfs_fare_rules_pkey PRIMARY KEY (id);
ALTER TABLE ONLY public.gtfs_fare_leg_join_rules
ADD CONSTRAINT gtfs_fare_leg_join_rules_pkey PRIMARY KEY (id);
ALTER TABLE ONLY public.gtfs_feed_infos
ADD CONSTRAINT gtfs_feed_infos_pkey PRIMARY KEY (id);
ALTER TABLE ONLY public.gtfs_frequencies
Expand Down Expand Up @@ -2006,6 +2026,8 @@ ALTER TABLE ONLY public.gtfs_fare_rules
ADD CONSTRAINT fk_rails_bd7d178423 FOREIGN KEY (fare_id) REFERENCES public.gtfs_fare_attributes(id);
ALTER TABLE ONLY public.gtfs_fare_rules
ADD CONSTRAINT fk_rails_c336ea9f1a FOREIGN KEY (feed_version_id) REFERENCES public.feed_versions(id);
ALTER TABLE ONLY public.gtfs_fare_leg_join_rules
ADD CONSTRAINT fk_rails_fare_leg_join_rules_feed_version_id FOREIGN KEY (feed_version_id) REFERENCES public.feed_versions(id);
ALTER TABLE ONLY public.gtfs_levels
ADD CONSTRAINT fk_rails_c5fba46e47 FOREIGN KEY (feed_version_id) REFERENCES public.feed_versions(id);
ALTER TABLE ONLY public.tl_route_geometries
Expand Down
13 changes: 13 additions & 0 deletions schema/sqlite/sqlite.sql
Original file line number Diff line number Diff line change
Expand Up @@ -727,6 +727,19 @@ CREATE TABLE gtfs_route_networks (
foreign key(route_id) REFERENCES gtfs_routes(id)
);

CREATE TABLE gtfs_fare_leg_join_rules (
"id" integer primary key autoincrement,
"feed_version_id" int not null,
"created_at" datetime DEFAULT CURRENT_TIMESTAMP,
"updated_at" datetime DEFAULT CURRENT_TIMESTAMP,
--- interline extensions
from_network_id varchar(255),
to_network_id varchar(255),
from_stop_id varchar(255),
to_stop_id varchar(255),
foreign key(feed_version_id) REFERENCES feed_versions(id)
);

CREATE TABLE tl_validation_reports (
"id" integer primary key autoincrement,
"feed_version_id" int not null,
Expand Down
7 changes: 7 additions & 0 deletions testdata/gtfs-examples/bad-entities/fare_leg_join_rules.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from_network_id,to_network_id,from_stop_id,to_stop_id,expect_error
ok,ok,ok,ok,
,ok,ok,ok,RequiredFieldError:from_network_id
ok,,ok,ok,RequiredFieldError:to_network_id
ok,ok,,ok,
ok,ok,ok,,
ok,ok,ok,ok,
3 changes: 3 additions & 0 deletions testdata/gtfs-examples/example/fare_leg_join_rules.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from_network_id,to_network_id,from_stop_id,to_stop_id
network1,network2,stop1,stop2
network2,network3,stop2,stop3
4 changes: 4 additions & 0 deletions tlcsv/reader.go
Original file line number Diff line number Diff line change
Expand Up @@ -426,6 +426,10 @@ func (reader *Reader) RouteNetworks() (out chan gtfs.RouteNetwork) {
return ReadEntities[gtfs.RouteNetwork](reader, getFilename(&gtfs.RouteNetwork{}))
}

func (reader *Reader) FareLegJoinRules() (out chan gtfs.FareLegJoinRule) {
return ReadEntities[gtfs.FareLegJoinRule](reader, getFilename(&gtfs.FareLegJoinRule{}))
}

func ReadEntities[T any](reader *Reader, efn string) chan T {
eout := make(chan T, bufferSize)
go func(fn string, c chan T) {
Expand Down
4 changes: 4 additions & 0 deletions tldb/reader.go
Original file line number Diff line number Diff line change
Expand Up @@ -313,6 +313,10 @@ func (reader *Reader) RouteNetworks() (out chan gtfs.RouteNetwork) {
return ReadEntities[gtfs.RouteNetwork](reader, GetTableName(&gtfs.RouteNetwork{}))
}

func (reader *Reader) FareLegJoinRules() (out chan gtfs.FareLegJoinRule) {
return ReadEntities[gtfs.FareLegJoinRule](reader, GetTableName(&gtfs.FareLegJoinRule{}))
}

func ReadEntities[T tt.EntityWithID](reader *Reader, table string) chan T {
ctx := context.TODO()
out := make(chan T, bufferSize)
Expand Down
2 changes: 1 addition & 1 deletion version.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ func getVersion() VersionInfo {
}

// GTFSVERSION is the commit for the spec reference.md file.
var GTFSVERSION = "11a49075c1f50d0130b934833b7eeb3fe518961c"
var GTFSVERSION = "11a49075c1f50d0130b934833b7eeb3fe518961c" // TODO: update

// GTFSRTVERSION is the commit for the gtfs-realtime.proto file.
var GTFSRTVERSION = "7b9f229dfa0b539c3fcf461986638890024feb06"
Loading