@@ -105,8 +105,36 @@ func (manager *Manager) GetAlertsForRoute(routeID string) []gtfs.Alert {
105105 return alerts
106106}
107107
108- // GetAlertsForTrip returns alerts matching the trip, its route, or agency.
109108// IMPORTANT: Caller must hold manager.RLock() before calling this method.
109+ func (manager * Manager ) GetAlertsByIDs (tripID , routeID , agencyID string ) []gtfs.Alert {
110+ manager .realTimeMutex .RLock ()
111+ defer manager .realTimeMutex .RUnlock ()
112+
113+ var alerts []gtfs.Alert
114+
115+ for _ , alert := range manager .realTimeAlerts {
116+ if alert .InformedEntities == nil {
117+ continue
118+ }
119+ for _ , entity := range alert .InformedEntities {
120+ if entity .TripID != nil && entity .TripID .ID == tripID {
121+ alerts = append (alerts , alert )
122+ break
123+ }
124+ if entity .RouteID != nil && routeID != "" && * entity .RouteID == routeID {
125+ alerts = append (alerts , alert )
126+ break
127+ }
128+ if entity .AgencyID != nil && agencyID != "" && * entity .AgencyID == agencyID {
129+ alerts = append (alerts , alert )
130+ break
131+ }
132+ }
133+ }
134+ return alerts
135+ }
136+
137+ // GetAlertsForTrip returns alerts matching the trip, its route, or agency.
110138func (manager * Manager ) GetAlertsForTrip (ctx context.Context , tripID string ) []gtfs.Alert {
111139 var routeID string
112140 var agencyID string
@@ -122,38 +150,7 @@ func (manager *Manager) GetAlertsForTrip(ctx context.Context, tripID string) []g
122150 }
123151 }
124152
125- manager .realTimeMutex .RLock ()
126- defer manager .realTimeMutex .RUnlock ()
127-
128- alertMap := make (map [string ]gtfs.Alert )
129-
130- for _ , alert := range manager .realTimeAlerts {
131- if alert .InformedEntities != nil {
132- for _ , entity := range alert .InformedEntities {
133- if entity .TripID != nil && entity .TripID .ID == tripID {
134- alertMap [alert .ID ] = alert
135- break
136- }
137-
138- if entity .RouteID != nil && routeID != "" && * entity .RouteID == routeID {
139- alertMap [alert .ID ] = alert
140- break
141- }
142-
143- if entity .AgencyID != nil && agencyID != "" && * entity .AgencyID == agencyID {
144- alertMap [alert .ID ] = alert
145- break
146- }
147- }
148- }
149- }
150-
151- alerts := make ([]gtfs.Alert , 0 , len (alertMap ))
152- for _ , alert := range alertMap {
153- alerts = append (alerts , alert )
154- }
155-
156- return alerts
153+ return manager .GetAlertsByIDs (tripID , routeID , agencyID )
157154}
158155
159156func (manager * Manager ) GetAlertsForStop (stopID string ) []gtfs.Alert {
0 commit comments