|
|
|
/*
|
|
|
|
* 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('');
|
|
|
|
}
|
|
|
|
|
|
|
|
/***********************************************************************
|
|
|
|
* Main page
|
|
|
|
**********************************************************************/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 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;
|
|
|
|
}
|
|
|
|
|
|
|
|
console.log('Retrieving artist for song...')
|
|
|
|
db.get('SELECT * FROM artists WHERE id = ' + song.artist, function (err, artist) {
|
|
|
|
if (err) {
|
|
|
|
throw err;
|
|
|
|
}
|
|
|
|
|
|
|
|
console.log('Retrieving lyrics for song... ')
|
|
|
|
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);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/***********************************************************************
|
|
|
|
* Support for the small box with the "others" picks
|
|
|
|
**********************************************************************/
|
|
|
|
exports.others = function (req, res) {
|
|
|
|
console.log('Artist: ' + req.body.artist);
|
|
|
|
console.log('Song: ' + req.body.song);
|
|
|
|
};
|