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
224 changes: 224 additions & 0 deletions controllers/tunr.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,224 @@
module.exports = (db) =>{
let allArtists = (request, response) => {
db.tunr.getAllArtists((err, res) =>{
if(err){
response.send("Error occurred.")
} else {
response.render('home', res)
}
})
}

let newArtistForm = (request, response) => {
response.render('new');
}

let createNewArtist = (request, response) => {
let x = request.body
let values = [x.artistName, x.photoURL, x.nationality]
db.tunr.postNewArtist(values, (err, res)=>{
if(err){
console.log(err)
response.send("Error occurred. Data not added.")
} else {
response.send("Artist created successfully! <a href='/artists/'>Back to homepage.</a>")
}
})
}

let artistPage = (request, response) => {
let artistId = [request.params.id]
db.tunr.getArtist(artistId, (err, res)=>{
if(err){
console.log(err)
response.send("Error occurred.")
} else {
response.render('indivArtist', res)
}
})
}

let editArtistPage = (request, response) => {
let artistId = [request.params.id]
db.tunr.getArtist(artistId, (err, res)=>{
if(err){
console.log(err.message)
response.send("Error occurred")
} else {
response.render('edit', res)
}
})
}

let editArtist = (request, response) => {
let x = request.body
let values = [x.artistName, x.photoURL, x.nationality, request.params.id]
db.tunr.updateArtist(values, (err, res)=>{
if(err){
console.log(err.message)
response.send("Error occurred, artist not updated.")
} else {
response.send("Artist successfully updated. <a href='/artists/'>Back to homepage.</a>")
}
})
}

let deleteArtist = (request, response) => {
let artistId = [request.params.id]
db.tunr.deleteArtist(artistId, (err, res)=>{
if(err){
console.log(err.message)
response.send("Error occurred")
} else {
db.tunr.deleteSongsByArtist(artistId, (err, res)=>{
response.send("Artist successfully deleted.<a href='/artists/'>Back to homepage.</a>" )
})
}
})
}

let artistSongPage = (request, response)=>{
let artistId = [request.params.id]
db.tunr.getSongsByArtist(artistId, (err, res)=>{
if(err){
console.log(err.message)
response.send("Error occurred")
} else {
if(res.rows.length==0){
let artistnewSongURL = "/artists/" + request.params.id + "/songs/new"
response.send(`No songs for this artist yet! <a href=${artistnewSongURL}>Add a new song for this artist.</a>`)
} else {
response.render('artistSongs', res)
}

}
})
}

let newSongByArtist = (request, response)=>{
let artistId = [request.params.id]
db.tunr.getArtist(artistId, (err, res)=>{
if(err){
console.log(err.message)
response.send("error occurred.")
} else {
response.render('newArtistSong', res)
}
})
}

let allSongs = (request, response) => {
let queryText = "SELECT * FROM songs"
db.tunr.getAllSongs((err, res)=>{
if(err){
console.log(err.message)
response.send("error occured")
} else {
response.render('homeSongs', res)
}
})
}

let newSongForm = (request, response) => {
db.tunr.getAllArtists((err, res)=>{
if(err){
console.log(err.message)
response.send("Error occurred.")
} else {
response.render('newSongs', res);
}
})

}

let createNewSong = (request, response) => {
let x = request.body
let values = [x.songTitle, x.album, x.previewLink, x.artwork, x.artistID]
db.tunr.postNewSong(values, (err, res)=>{
if(err){
console.log(err)
response.send("Error occurred. Data not added.")
} else {
response.send("Song created successfully! <a href='/artists/'>Back to homepage.</a>")
}
})
}

let songPage = (request, response) => {
let songId = [request.params.id]
db.tunr.getSong(songId, (err, res)=>{
if(err){
console.log(err)
response.send("Error occurred.")
} else {
response.render('indivSong', res)
}
})
}

let editSongPage = (request, response) => {
let songId = [request.params.id]
db.tunr.getSong(songId, (err, res)=>{
if(err){
console.log(err.message)
response.send("Error occurred")
} else {
db.tunr.getAllArtists((err2, res2)=>{
if(err2){
console.log(err.message)
response.send("Error occurred.")
} else {
res.artists = res2.rows
response.render('editSongs', res);
}
})
}
})
}

let editSong = (request, response) => {
let x = request.body
let values = [x.songTitle, x.album, x.previewLink, x.artwork, x.artistID, request.params.id]
db.tunr.updateSong(values, (err, res)=>{
if(err){
console.log(err)
response.send("Error occurred. Data not updated.")
} else {
response.send("Song edited successfully! <a href='/songs/'>Back to homepage.</a>")
}
})

}

let deleteSong = (request, response) => {
let songId = [request.params.id]
db.tunr.deleteSong(songId, (err, res)=>{
if(err){
console.log(err.message)
response.send("Error occurred")
} else {
response.send("Song successfully deleted.<a href='/songs/'>Back to homepage.</a>" )
}
})
}


return {
allArtists,
newArtistForm,
createNewArtist,
artistPage,
editArtistPage,
editArtist,
deleteArtist,
artistSongPage,
newSongByArtist,
allSongs,
newSongForm,
createNewSong,
songPage,
editSongPage,
editSong,
deleteSong
}
}
30 changes: 30 additions & 0 deletions db.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
const pg = require('pg');

// Initialise postgres client
const configs = {
user: 'clairetay',
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);
});


//link all models function to db (pool)
const allTunrModelsFunction = require('./models/tunr')
const tunrModelsObject = allTunrModelsFunction(pool)



module.exports = {
pool: pool,
tunr: tunrModelsObject,
queryInterface: (text, params, callback) =>{
return pool.query(text, params, callback)
}
}
48 changes: 17 additions & 31 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,7 @@ 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 @@ -33,7 +19,8 @@ app.use(express.urlencoded({
extended: true
}));

app.use(methodOverride('_method'));
app.use(methodOverride('_method'))
app.use(express.static(__dirname + '/public'));


// Set react-views to be the default view engine
Expand All @@ -44,21 +31,20 @@ app.engine('jsx', reactEngine);

/**
* ===================================
* Routes
* Database
* ===================================
*/
const allModels = require('./db')

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

// respond with HTML page displaying all pokemon
response.render('home');
});
/**
* ===================================
* Routes
* ===================================
*/

app.get('/new', (request, response) => {
// respond with HTML page with form to create new pokemon
response.render('new');
});
const setRoutesFunction = require('./routes')
setRoutesFunction(app, allModels)


/**
Expand All @@ -69,16 +55,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'));

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

process.on('SIGTERM', onClose);
process.on('SIGINT', onClose);
process.on('SIGINT', onClose);
Loading