Skip to content
Permalink
Browse files
Added playlist
  • Loading branch information
nellurib committed Jul 29, 2020
1 parent 118e73a commit ef5484962fbfb59c670b570223c4f4347e2c2eac
Show file tree
Hide file tree
Showing 9 changed files with 193 additions and 18 deletions.
@@ -1,23 +1,24 @@
[
{
"Singer_Name": "John",
"Song_id":"s10002",
"Singer_Name": "John",
"image-url":"",
"Singer-details":"",
"Description":"",
"Track":"BlackOut"
},
{
"Singer_Name": "Justin-Bieber",

"image-url":"",
"Singer-details":"",
"Description":"It was launched in 2002. At that Justin bieber age was 12 years.",
"Song_id":"s10001",
"image-url":"data:image/jpeg;base64,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",
"Singer-details":"Justin Drew Bieber (/ˈbiːbər/; born March 1, 1994) is a Canadian singer, songwriter, and actor. Discovered at 13 years old by talent manager Scooter Braun after he had watched his YouTube cover song videos, Bieber was signed to RBMG Records in 2008. With Bieber's debut EP My World, released in late 2009, Bieber became the first artist to have seven songs from a debut record chart on the Billboard Hot 100.",
"Description":"Baby is a song by Canadian recording artist Justin Bieber, alongside rapper Ludacris. It was released as the lead single on Bieber's debut album, My World 2.0. The track was written by Bieber with Christina Milian, Christopher Tricky Stewart who worked with Bieber on a previous single One Time, and R&B singer The-Dream, and produced by the latter two.",
"Track":"Baby"

},
{
"Singer_Name": "ChainSmoker",

"Song_id":"s10003",
"image-url":"",
"Singer-details":"",
"Description":"It was launched in 2002. At that Justin bieber age was 12 years.",
@@ -26,7 +27,7 @@
},
{
"Singer_Name": "JohnCena",

"Song_id":"s10004",
"image-url":"",
"Singer-details":"",
"Description":"It was launched in 2002. At that Justin bieber age was 12 years.",
@@ -36,7 +37,7 @@
},
{
"Singer_Name": "Akon",

"Song_id":"s10005",
"image-url":"",
"Singer-details":"",
"Description":"It was launched in 2002. At that Justin bieber age was 12 years.",
@@ -46,7 +47,7 @@
},
{
"Singer_Name": "A.R-Rehman",

"Song_id":"s10006",
"image-url":"",
"Singer-details":"",
"Description":"It was launched in 2002. At that Justin bieber age was 12 years.",
@@ -55,7 +56,7 @@
},
{
"Singer_Name": "Pritam",

"Song_id":"s10007",
"image-url":"",
"Singer-details":"",
"Description":"It was launched in 2002. At that Justin bieber age was 12 years.",
@@ -65,7 +66,7 @@
},
{
"Singer_Name": "AlanWalker",

"Song_id":"s10008",
"image-url":"",
"Singer-details":"",
"Description":"It was launched in 2002. At that Justin bieber age was 12 years.",
@@ -75,7 +76,7 @@
},
{
"Singer_Name": "EDSheeran",

"Song_id":"s10009",
"image-url":"",
"Singer-details":"",
"Description":"",
@@ -1,18 +1,16 @@

const bcrypt = require('bcrypt-promise')
const sqlite = require('sqlite-async')

const saltRounds = 10

module.exports = class List {

constructor(dbName = ':memory:') {
return (async() => {
this.db = await sqlite.open(dbName)
/*we need this table to store the user track
//we need this table to store the user track
const sql = 'CREATE TABLE IF NOT EXISTS uploadTrack\
(id INTEGER PRIMARY KEY AUTOINCREMENT, user TEXT, pass TEXT, email TEXT);'
await this.db.run(sql)*/
(id INTEGER PRIMARY KEY AUTOINCREMENT, singer_name TEXT, singer_details TEXT, description TEXT,image_url TEXT, Track_name TEXT;'
await this.db.run(sql)
return this
console.log("Track open")
})()
@@ -0,0 +1,49 @@

const sqlite = require('sqlite-async')


module.exports = class List {

constructor(dbName = ':memory:') {
return (async() => {
this.db = await sqlite.open(dbName)
//we need this table to store the user track
const sql = 'CREATE TABLE IF NOT EXISTS uploadTrack\
(id TEXT, singer_name TEXT, singer_details TEXT, description TEXT,image_url TEXT, Track_name TEXT;'
await this.db.run(sql)
return this
console.log("Track open")
})()
}

/**
* checks to see if a set of login credentials are valid
* @param {String} username the username to check
* @param {String} password the password to check
* @returns {Boolean} returns true if credentials are valid
*/
async register(user, pass, email) {
Array.from(arguments).forEach( val => {
if(val.length === 0) throw new Error('missing field')
})
let sql = `SELECT COUNT(id) as records FROM artist WHERE user="${user}";`
const data = await this.db.get(sql)
if(data.records !== 0) throw new Error(`username "${user}" already in use`)
sql = `SELECT COUNT(id) as records FROM artist WHERE email="${email}";`
const emails = await this.db.get(sql)
if(emails.records !== 0) throw new Error(`email address "${email}" is already in use`)
pass = await bcrypt.hash(pass, saltRounds)
sql = `INSERT INTO artist(user, pass, email) VALUES("${user}", "${pass}", "${email}")`
await this.db.run(sql)
return true
}

async getAll() {


}

async tearDown() {
await this.db.close()
}
}
@@ -0,0 +1,36 @@

const sqlite = require('sqlite-async')


module.exports = class UploadTrack {

constructor(dbName = ':memory:') {
console.log("constructor")
return (async() => {
this.db = await sqlite.open(dbName)
const sql = 'CREATE TABLE IF NOT EXISTS uploadTrack\
(id TEXT, singer_name TEXT, singer_details TEXT, description TEXT,image_url TEXT, Track_name TEXT);'
await this.db.run(sql)
return this
})()
}

async insert(id, singer_name, singer_details,description,track,image_url) {
sql = `INSERT INTO uploadTrack(id, singer_name, singer_details,description,image_url,Track_name) VALUES("${id}", "${singer_name}", "${singer_details}", "${description}", "${image_url}", "${track}")`
await this.db.run(sql)
console.log("Done")
return true
}

async getAll() {
sql = `SELECT * FROM uploadTrack`
const record = await this.db.get(sql)
return record


}

async tearDown() {
await this.db.close()
}
}
@@ -7,6 +7,7 @@ const saltRounds = 10
module.exports = class User {

constructor(dbName = ':memory:') {
console.log("constructor")
return (async() => {
this.db = await sqlite.open(dbName)
// we need this table to store the user accounts
@@ -9,6 +9,7 @@ const tracks=require("../Alltracks.json")
const User = require('../modules/user')
const dbName = 'website.db'
const List=require('../modules/list')
const UploadTrack=require('../modules/uploadTrack')
/**
* The secure home page.
*
@@ -141,7 +142,47 @@ router.get("/trackDetails/:track",koaBody,async ctx=>{
console.log(ctx.hbs)}

})
router.get("/uploadTrack/:id",koaBody,async ctx=>{
console.log("enter")
const value=ctx.params.id;
console.log(value)

const upload = await new UploadTrack(dbName)

try
{ var arrFound = tracks.filter(function(item) {
return item.Song_id == value;
});
console.log(arrFound[0])
const res= await upload.insert(arrFound[0].Song_id,arrFound[0].Singer_Name , arrFound[0].Singer_Details,arrFound[0].Description,arrFound[0].Track,arrFound[0].image_url)
console.log('record inserted')
return ctx.redirect('/playlist')


}
catch(err){ console.log(err)
ctx.hbs.msg = err.message
ctx.hbs.body = ctx.request.body
console.log(ctx.hbs)}

})
router.get('/playlist',koaBody,async ctx=>{
const upload= await new UploadTrack(dbName)
try{
const records= await upload.getAll()
console.log(records)
ctx.hbs.record=records
await ctx.render('playlist',ctx.hbs)
}
catch (err) {
console.log(err)
ctx.hbs.msg = err.message
ctx.hbs.body = ctx.request.body
console.log(ctx.hbs)
}finally {
upload.tearDown()
}
})
/*
router.post('/issues', koaBody,async ctx => {
const iss = await new Issues(dbName)
@@ -25,13 +25,14 @@
<tr>
<th>Singer-Name</th>
<th>Track</th>
<th>Upload</th>

</tr>
{{#each record}}

<tr>
<td><a href="/singerDetails/{{Singer_Name}}">{{Singer_Name}}</a></td> <td><a href="/trackDetails/{{Track}}">{{Track}}</a></td>

<td><a href="/uploadTrack/{{Song_id}}"><input type="button" value="Upload Track"></input></a></td>
</tr>
{{/each}}
</table>
@@ -0,0 +1,46 @@

<!doctype html>

<html lang="en">
<head>
<meta charset="utf-8">
<title>Playlist</title>
<meta name="description" content="form to add new books">
<meta name="author" content="Mark Tyers">
<link href="{{host}}/style.css" type="text/css" rel="stylesheet" />

</script>
</head>
<body>
<header>
<h1>PlayList</h1>
</header>
{{#if msg}}
<p class="msg">{{msg}}</p>
{{/if}}

<br>
<br>
<table border="1" align="center" cellspacing="20">
<tr>
<th>Singer-Name</th>
<th>Track</th>
<th>Action</th>

</tr>
{{#each record}}

<tr>
<td><a href="/singerDetails/{{Singer_Name}}">{{Singer_Name}}</a></td> <td><a href="/trackDetails/{{Track_Name}}">{{Track_Name}}</a></td>
</tr>
{{/each}}
</table>
<br>

<center><a href="/logout">Logout</a></center>



</main>
</body>
</html>
@@ -18,7 +18,9 @@
{{/if}}
<main>
<p><a href="/listTrack">Display all tracks</a></p>
<p><a href="/playlist">Playlist</a></p>
<p><a href="/logout">Logout</a></p>

</main>
</body>
</html>

0 comments on commit ef54849

Please sign in to comment.