Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions controllers/artists.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@

module.exports = (db) => {

let helloWorld = (req, res) => res.send("Hello World.")

let allArtists = (req, res) => {
db.artists.getAll((err, result) => {
res.send(result.rows)
})
}

let newArtistForm = (req, res) => res.render('artists/new');

let addNewArtist = (req, res) => {
let values = [req.body.name, req.body.photo_url, req.body.nationality];
db.artists.postNewArtist(values, (err, result) => res.send("Artist added successfully!"))
}

let viewSingleArtist = (req, res) => {
let id = [req.params.id];
db.artists.artistInfo(id, (err, result) => res.send(result.rows))
}

let editArtistInfo = (req, res) => {
db.artists.editInfo(req.params.id, (err, result) => res.render('artists/edit', result.rows[0]))
}

let updateArtistInfo = (req, res) => {
let values = [req.params.id, req.body.name, req.body.photo_url, req.body.nationality];
db.artists.updateInfo(values, (err, result) => res.send("Entry updated successfully"))
}

let deleteArtistForm = (req, res) => res.render('artists/delete');


let deleteArtist = (req, res) => {
db.artists.removeEntry(req.body.id, (err, result) => res.send("Artist entry deleted."))
}

let showArtistSongs = (req, res) => {
db.artists.getSongs(req.params.id, (err, result) => res.send(result.rows))
}

return {
allArtists,
helloWorld,
newArtistForm,
addNewArtist,
viewSingleArtist,
editArtistInfo,
updateArtistInfo,
deleteArtistForm,
deleteArtist,
showArtistSongs
}
}
20 changes: 20 additions & 0 deletions controllers/playlists.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
module.exports = (db) => {

let newPlaylistForm = (req, res) => res.render('playlists/new');

let addNewPlaylist = (req, res) => {
let values = [req.body.id, req.body.name];
console.log(values)
db.playlists.postNewPlaylist(values, (err,result) => res.send("Successfully created playlist!"))
}

let showPlaylist = (req, res) => {
db.playlists.getAll(req.params.id, (err, result) => res.send(result.rows))
}

return {
newPlaylistForm,
addNewPlaylist,
showPlaylist
}
}
49 changes: 49 additions & 0 deletions controllers/songs.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
module.exports = (db) => {

console.log("song controllers activated");

let allSongs = (req, res) => db.songs.getAll((err, result) => res.send(result.rows))

let newSongForm = (req, res) => res.render('songs/new')

let addNewSong = (req, res) => {
let values = [req.body.title, req.body.album, req.body.preview_link, req.body.artwork, req.body.artist_id];
db.songs.postNewSong(values, (err, result) => res.send("Song added successfully!"))
}

let viewSong = (req, res) => {
db.songs.getSong(req.params.id, (err, result) => {
if (result.rowCount > 0){
res.send(result.rows[0])
} else {
res.send("Sorry, song not found.")
}
})
}

let editSongInfo = (req, res) => {
db.songs.editInfo(req.params.id, (err, result) => res.render('songs/edit', result.rows[0]));
}

let updateSongInfo = (req, res) => {
let values = [req.params.id, req.body.title, req.body.album, req.body.preview_link, req.body.artwork, req.body.artist_id];
db.songs.updateInfo(values, (err, result) => res.send("Successfully updated song entry"));
}

let deleteSongForm = (req, res) => res.render('songs/delete')

let deleteSong = (req, res) => {
db.songs.removeEntry(req.body.id, (err, result) => res.send("Song entry deleted."))
}

return {
allSongs,
newSongForm,
addNewSong,
viewSong,
editSongInfo,
updateSongInfo,
deleteSongForm,
deleteSong
};
};
37 changes: 37 additions & 0 deletions db.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
console.log("db started")

const pg = require('pg');

const configs = {
user: 'jarryl',
host: '127.0.0.1',
database: 'tunr_db',
port: 5432,
};

const pool = new pg.Pool(configs);

pool.on('error', function (err) {
console.log('idle client error', err.message, err.stack);
});

const allArtistsModels = require('./models/artists')
const allSongsModels = require('./models/songs')
const allPlaylistsModels = require('./models/playlists')

console.log(allArtistsModels);

const artistsModelObject = allArtistsModels(pool)
const songsModelObject = allSongsModels(pool)
const playlistsModelObject = allPlaylistsModels(pool)


module.exports = {
query: (text, params, callback) => {
return pool.query(text, params, callback);
},
pool,
artists: artistsModelObject,
songs: songsModelObject,
playlists: playlistsModelObject
}
41 changes: 10 additions & 31 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,10 @@ console.log("starting up!!");

const express = require('express');
const methodOverride = require('method-override');
const pg = require('pg');

// Initialise postgres client
const configs = {
user: 'YOURUSERNAME',
host: '127.0.0.1',
database: 'tunr_db',
port: 5432,
};

const pool = new pg.Pool(configs);

pool.on('error', function (err) {
console.log('idle client error', err.message, err.stack);
});

/**
* ===================================
Expand All @@ -42,23 +31,13 @@ app.set('views', __dirname + '/views');
app.set('view engine', 'jsx');
app.engine('jsx', reactEngine);

/**
* ===================================
* Routes
* ===================================
*/

app.get('/', (request, response) => {
// query database for all pokemon

// respond with HTML page displaying all pokemon
response.render('home');
});
const allModels = require('./db.js');

app.get('/new', (request, response) => {
// respond with HTML page with form to create new pokemon
response.render('new');
});
// Link to all the routes
const setRoutes = require('./routes.js');
// Call and pass app over to routes
setRoutes(app, allModels);


/**
Expand All @@ -69,16 +48,16 @@ app.get('/new', (request, response) => {
const server = app.listen(3000, () => console.log('~~~ Tuning in to the waves of port 3000 ~~~'));

let onClose = function(){

console.log("closing");

server.close(() => {

console.log('Process terminated');

pool.end( () => console.log('Shut down db connection pool'));
})
};

process.on('SIGTERM', onClose);
process.on('SIGINT', onClose);
process.on('SIGINT', onClose);
85 changes: 85 additions & 0 deletions models/artists.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@

//this will require access to allModels

module.exports = (dbPoolInstance) => {


let getAll = (fromController) => {
let query = 'SELECT * FROM artists;'
dbPoolInstance.query(query, (err, result) => fromController(err, result))
}

let postNewArtist = (values, fromController) => {
dbPoolInstance.query("INSERT INTO artists (name, photo_url, nationality) VALUES ($1, $2, $3);", values, (err, result) => {
if (err) {
console.log("Error", err.stack);
} else {
fromController(err, result);
}
})
}


let artistInfo = (id, fromController) => {
dbPoolInstance.query('SELECT * FROM artists WHERE id = $1;', id, (err, result) => {
if (err) {
console.log("Error", err.stack);
} else {
fromController(err, result);
}
})
}

let editInfo = (id, fromController) => {
dbPoolInstance.query("SELECT * FROM artists WHERE id = $1;", [id], (err, result) => {
if (err) {
console.log("Error", err.stack);
} else {
fromController(err, result);
}
})
}


let updateInfo = (values, fromController) => {
dbPoolInstance.query("UPDATE artists SET name = $2, photo_url = $3, nationality = $4 WHERE id = $1;", values, (err, result) => {
if (err) {
console.log("Error", err.stack);
} else {
fromController(err, result);
}
})
}

let removeEntry = (id, fromController) => {
dbPoolInstance.query("DELETE FROM artists WHERE id = $1;", [id], (err, result) => {
console.log("this triggered");
if (err) {
console.log("Error", err.stack);
} else {
fromController(err, result);
}
})
}

let getSongs = (id, fromController) => {
dbPoolInstance.query("SELECT * FROM songs WHERE artist_id = $1;", [id], (err, result) => {
if (err) {
console.log("Error", err.stack);
} else {
fromController(err, result);
}
})
}

return {
getAll: getAll,
postNewArtist,
artistInfo,
editInfo,
updateInfo,
removeEntry,
getSongs
};

};
27 changes: 27 additions & 0 deletions models/playlists.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
module.exports = (dbPoolInstance) => {

let postNewPlaylist = (values, callback) => {
dbPoolInstance.query("INSERT INTO playlists (id, name) VALUES ($1, $2);", values, (err, result) => {
if (err) {
console.log(err.message);
} else {
callback(err, result);
}
})
}

let getAll = (id, callback) => {
dbPoolInstance.query("SELECT * FROM playlists where id = $1;", [id], (err, result) => {
if (err) {
console.log(err.message);
} else {
callback(err, result);
}
})
}

return {
postNewPlaylist,
getAll
}
}
Loading