diff --git a/Alltracks.json b/Alltracks.json index b7376ca..9f929a0 100644 --- a/Alltracks.json +++ b/Alltracks.json @@ -1,6 +1,7 @@ [ { - "Singer_Name": "John", + "Song_id":"s10002", + "Singer_Name": "John", "image-url":"", "Singer-details":"", "Description":"", @@ -8,16 +9,16 @@ }, { "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":"", diff --git a/modules/list.js b/modules/list.js index 3c1e0dc..548924c 100644 --- a/modules/list.js +++ b/modules/list.js @@ -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") })() diff --git a/modules/uploadTrack b/modules/uploadTrack new file mode 100644 index 0000000..deeff7b --- /dev/null +++ b/modules/uploadTrack @@ -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() + } +} diff --git a/modules/uploadTrack.js b/modules/uploadTrack.js new file mode 100644 index 0000000..425cdda --- /dev/null +++ b/modules/uploadTrack.js @@ -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() + } +} diff --git a/modules/user.js b/modules/user.js index f6ec2f0..c13672f 100644 --- a/modules/user.js +++ b/modules/user.js @@ -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 diff --git a/routes/public.js b/routes/public.js index ded8a0b..c792122 100644 --- a/routes/public.js +++ b/routes/public.js @@ -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) diff --git a/views/listTrack.handlebars b/views/listTrack.handlebars index 17080d1..7e42f41 100644 --- a/views/listTrack.handlebars +++ b/views/listTrack.handlebars @@ -25,13 +25,14 @@ Singer-Name Track + Upload {{#each record}} {{Singer_Name}} {{Track}} - + {{/each}} diff --git a/views/playlist.handlebars b/views/playlist.handlebars new file mode 100644 index 0000000..2bbe188 --- /dev/null +++ b/views/playlist.handlebars @@ -0,0 +1,46 @@ + + + + + + + Playlist + + + + + + + +
+

PlayList

+
+ {{#if msg}} +

{{msg}}

+ {{/if}} + +
+
+ + + + + + + + {{#each record}} + + + + + {{/each}} +
Singer-NameTrackAction
{{Singer_Name}} {{Track_Name}}
+
+ +
Logout
+ + + + + + \ No newline at end of file diff --git a/views/secure.handlebars b/views/secure.handlebars index ff0f1fc..412771f 100644 --- a/views/secure.handlebars +++ b/views/secure.handlebars @@ -18,7 +18,9 @@ {{/if}}

Display all tracks

+

Playlist

Logout

+