/* * main page */ var sqlite3 = require('sqlite3'); var path = require('path'); var db; // make it global /** * db name */ function dbName() { return path.join(__dirname, '../../db/lyrics.sq3'); } /** * turn a phrase into a list of acronyms */ function acronymize(phrase) { var letters = []; phrase.split(' ').forEach(function (elem, idx, array) { letters.push(elem[0].toUpperCase()); }); return letters.join(''); } /** * Pick a song */ function getSong(res) { var name = dbName(); console.log('Opening the database ' + name + '...'); db = new sqlite3.Database(name, sqlite3.OPEN_READWRITE, function (error) { if (error) { throw error; } console.log('Pickling a song...'); db.get('SELECT * FROM songs WHERE done_in IS NULL ORDER BY random() LIMIT 1', function (err, song) { if (err) { throw err; } db.get('SELECT * FROM artists WHERE id = ' + song.artist, function (err, artist) { if (err) { throw err; } db.get('SELECT * FROM lyrics WHERE song = ' + song.id, function (err, lyrics) { if (err) { throw err; } var params = {title: 'Round', lyrics: lyrics.lyrics, song_title: song.title, song_artist: artist.name, acronym_title: acronymize(song.title), acronym_artist: acronymize(artist.name), id: song.id }; res.render('index', params); }); }); }); }); } exports.index = function (req, res) { getSong(res); };