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