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") local function Releasehandler(self) local release_id = self.params.release local release = models.releases:find({ id = release_id }) if not release then self:write({"Not Found", status = 404}) return end local hidden_fields = { "unique_name", "created_at", "updated_at" } for i, field in ipairs(hidden_fields) do release[field] = nil end local tracks = db.query([[ SELECT track.name AS track_name, track.id, release.name AS release_name FROM track_releases INNER JOIN tracks AS track ON (track_releases.track = track.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 track_releases.release = ? ]], release["id"]) release["tracks"] = tracks for i, track in ipairs(tracks) do local airtimes = db.query([[ SELECT airtime FROM airtimes WHERE track = ? ]], track["id"]) release["tracks"][i]["airtimes"] = {} for j, airtime in ipairs(airtimes) do table.insert(release["tracks"][i]["airtimes"], airtime['airtime']) end end return { json = release } end return Releasehandler