PreviouslyOnIFM/code/handlers/stationhandler.lua
2020-10-12 11:17:51 +02:00

70 lines
2.1 KiB
Lua

local db = require("lapis.db")
local to_json = require("lapis.util").to_json
local autoload = require("lapis.util").autoload
local preload = require("lapis.db.model").preload
local models = autoload("models")
function Stationhandler(self)
local station_id = self.params.station
local json = self.params.json or nil
local station = models.Stations:find({ station = station_id })
if not station then
print("unknown station: " .. station_id)
else
print("This is: " .. station["name"])
end
local limit = self.params.limit or 10
local offset = self.params.offset or 0
-- local airtimes = models.Airtimes:paginated("where station = ? order by airtime desc", station["id"], {
-- per_page = 10,
-- fields = "track, station, airtime",
-- prepare_results = function(airtime)
-- models.Tracks:include_in(airtime, { id="track" })
-- models.Stations:include_in(airtime, { id="station" })
-- return airtime
-- end
-- })
-- airtimes = airtimes:get_page(1)
self.airtimes = db.query([[
SELECT airtime, track.id AS track_id, track.name AS track, track.year, track.info_url, track.img_url,
artist.id AS artist_id, artist.name as artist,
release.id AS release_id, release.name AS release, release.country, release.label AS label
FROM airtimes
INNER JOIN
tracks AS track ON (airtimes.track = track.id)
INNER JOIN
track_artists AS track_artist ON (track_artist.track = track.id)
INNER JOIN
artists AS artist ON (track_artist.artist = artist.id)
INNER JOIN
track_releases AS track_release ON (track_release.track = track.id)
INNER JOIN
releases AS release ON (track_release.release = release.id)
WHERE station = ?
ORDER BY airtime
DESC LIMIT ?
OFFSET ?
]], station["id"], limit, offset*limit
)
if json then
return { json = self.airtimes }
end
-- for i, item in ipairs(self.airtimes) do
-- print(to_json(item))
-- end
return { render = "station" }
end
return Stationhandler