bus.fey.ink/sql/get-departures.sql

43 lines
799 B
SQL

WITH exceptions AS (
SELECT service, NOT (type - 1) as added
FROM calendar_dates
WHERE
calendar_dates.date = date(:time)
)
SELECT timediff(
stop_times.departure,
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;