42 lines
810 B
SQL
42 lines
810 B
SQL
WITH exceptions AS (
|
|
SELECT service, NOT (type - 1) as added
|
|
FROM calendar_dates
|
|
WHERE
|
|
calendar_dates.date = date(:time)
|
|
)
|
|
SELECT
|
|
unixepoch(stop_times.departure) -
|
|
unixepoch(time(:time)) as wait,
|
|
routes.*,
|
|
trips.headsign,
|
|
trips.short_name as trip_name,
|
|
stop_times.arrival,
|
|
stop_times.departure
|
|
FROM
|
|
stop_times
|
|
JOIN trips
|
|
ON stop_times.trip_id = trips.id
|
|
JOIN routes
|
|
ON trips.route_id = routes.id
|
|
JOIN calendar
|
|
ON calendar.service = trips.service_id
|
|
LEFT JOIN exceptions
|
|
ON exceptions.service = calendar.service
|
|
WHERE
|
|
stop_times.stop_id = :stop
|
|
AND
|
|
stop_times.departure > time(:time)
|
|
AND (
|
|
1 << (strftime('%w', :time) - 1) & calendar.days <> 0
|
|
AND
|
|
calendar.start_date < date(:time)
|
|
AND
|
|
calendar.end_date > date(:time)
|
|
AND
|
|
added IS NULL
|
|
OR
|
|
added)
|
|
ORDER BY
|
|
stop_times.departure
|
|
LIMIT :limit;
|