|  | @@ -204,8 +204,8 @@ async function SubmitWrapper(req, res) {
 | 
	
		
			
				|  |  |      // TODO
 | 
	
		
			
				|  |  |      //  May extract logic for dupe check in the future.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    db.execute(("SELECT uuid, song_name, album_name, artist, kind FROM instrunet_entry WHERE song_name = '?' and artist = '?' and kind = ?"), [await converters2t.convertPromise(req.body.name), await converters2t.convertPromise(req.body.artist), req.body.kind], async (err, rowsT) => {
 | 
	
		
			
				|  |  | -        db.execute("SELECT uuid, song_name, album_name, artist, kind FROM instrunet_entry WHERE song_name = '?' and artist = '?' and kind = ?", [await convertert2s.convertPromise(req.body.name), await convertert2s.convertPromise(req.body.artist), req.body.kind],  (err, rowsS) => {
 | 
	
		
			
				|  |  | +    db.execute(("SELECT uuid, song_name, album_name, artist, kind FROM instrunet_entry WHERE song_name = ? and artist = ? and kind = ?"), [await converters2t.convertPromise(req.body.name), await converters2t.convertPromise(req.body.artist), req.body.kind], async (err, rowsT) => {
 | 
	
		
			
				|  |  | +        db.execute("SELECT uuid, song_name, album_name, artist, kind FROM instrunet_entry WHERE song_name = ? and artist = ? and kind = ?", [await convertert2s.convertPromise(req.body.name), await convertert2s.convertPromise(req.body.artist), req.body.kind], (err, rowsS) => {
 | 
	
		
			
				|  |  |              let dedupe = [];
 | 
	
		
			
				|  |  |              rowsT.forEach(row => {
 | 
	
		
			
				|  |  |                  dedupe = dedupe.concat(row);
 | 
	
	
		
			
				|  | @@ -215,7 +215,6 @@ async function SubmitWrapper(req, res) {
 | 
	
		
			
				|  |  |                      dedupe = dedupe.concat(row);
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              })
 | 
	
		
			
				|  |  | -            console.log(dedupe);
 | 
	
		
			
				|  |  |              if (dedupe.length === 0) {
 | 
	
		
			
				|  |  |                  // Verify
 | 
	
		
			
				|  |  |                  if (req.body.file.substring(0, 5) !== "data:") {
 | 
	
	
		
			
				|  | @@ -314,16 +313,8 @@ app.options('/submit', function (req, res) {
 | 
	
		
			
				|  |  |  app.post('/search_api', async function (req, res) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    db.execute(`SELECT uuid, song_name, album_name, artist, kind
 | 
	
		
			
				|  |  | -                FROM instrunet_entry
 | 
	
		
			
				|  |  | -                WHERE song_name like '%${await converters2t.convertPromise(req.body.searchStr)}%'
 | 
	
		
			
				|  |  | -                   or album_name like '%${await converters2t.convertPromise(req.body.searchStr)}%'
 | 
	
		
			
				|  |  | -                   or artist like '%${await converters2t.convertPromise(req.body.searchStr)}%'`, async (err, rowsT) => {
 | 
	
		
			
				|  |  | -        db.execute(`SELECT uuid, song_name, album_name, artist, kind
 | 
	
		
			
				|  |  | -                    FROM instrunet_entry
 | 
	
		
			
				|  |  | -                    WHERE song_name like '%${await convertert2s.convertPromise(req.body.searchStr)}%'
 | 
	
		
			
				|  |  | -                       or album_name like '%${await convertert2s.convertPromise(req.body.searchStr)}%'
 | 
	
		
			
				|  |  | -                       or artist like '%${await convertert2s.convertPromise(req.body.searchStr)}%'`, (err, rowsS) => {
 | 
	
		
			
				|  |  | +    db.execute("SELECT uuid, song_name, album_name, artist, kind FROM instrunet_entry WHERE song_name like ? or album_name like ? or artist like ?", [`%${await converters2t.convertPromise(req.body.searchStr)}%`, `%${await converters2t.convertPromise(req.body.searchStr)}%`, `%${await converters2t.convertPromise(req.body.searchStr)}%`], async (err, rowsT) => {
 | 
	
		
			
				|  |  | +        db.execute("SELECT uuid, song_name, album_name, artist, kind FROM instrunet_entry WHERE song_name like ? or album_name like ? or artist like ?", [`%${await convertert2s.convertPromise(req.body.searchStr)}%`, `%${await convertert2s.convertPromise(req.body.searchStr)}%`, `%${await convertert2s.convertPromise(req.body.searchStr)}%`], (err, rowsS) => {
 | 
	
		
			
				|  |  |              try {
 | 
	
		
			
				|  |  |                  let prepare = [];
 | 
	
		
			
				|  |  |                  rowsT.forEach(row => {
 | 
	
	
		
			
				|  | @@ -356,9 +347,7 @@ app.get("/getSingle", function (req, res) {
 | 
	
		
			
				|  |  |      let uuid = crypto.randomUUID()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      if (req.query.id) {
 | 
	
		
			
				|  |  | -        db.execute(`SELECT song_name, album_name, artist, kind, albumcover
 | 
	
		
			
				|  |  | -                    FROM instrunet_entry
 | 
	
		
			
				|  |  | -                    WHERE uuid = "${req.query.id}"`, async function (err, rows) {
 | 
	
		
			
				|  |  | +        db.execute("SELECT song_name, album_name, artist, kind, albumcover FROM instrunet_entry WHERE uuid = ?", [req.query.id], async function (err, rows) {
 | 
	
		
			
				|  |  |              if (err) {
 | 
	
		
			
				|  |  |                  console.log(err);
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -459,9 +448,10 @@ app.get("/favicon.ico", function (req, res) {
 | 
	
		
			
				|  |  |      res.end("");
 | 
	
		
			
				|  |  |  })
 | 
	
		
			
				|  |  |  let availCache = {};
 | 
	
		
			
				|  |  | -setInterval(() => {
 | 
	
		
			
				|  |  | -    availCache = {};
 | 
	
		
			
				|  |  | -}, 1800000)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// setInterval(() => {
 | 
	
		
			
				|  |  | +//     availCache = {};
 | 
	
		
			
				|  |  | +// }, 1800000)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Fetch
 | 
	
		
			
				|  |  |  app.get('/:uuid', function (req, res) {
 | 
	
	
		
			
				|  | @@ -470,17 +460,18 @@ app.get('/:uuid', function (req, res) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      function Provider(err, rows) {
 | 
	
		
			
				|  |  |          try {
 | 
	
		
			
				|  |  | +            availCache[uuid] = rows[0]
 | 
	
		
			
				|  |  |              res.contentType("audio/mp3");
 | 
	
		
			
				|  |  |              res.header("Access-Control-Allow-Origin", "*");
 | 
	
		
			
				|  |  |              res.header("Access-Control-Allow-Headers", "Content-Type");
 | 
	
		
			
				|  |  | -            res.header("Access-Control-Allow-Origin", "*");
 | 
	
		
			
				|  |  | -            res.header('Content-Disposition', `attachment; filename="${encodeURI(rows[0].song_name)}"`);
 | 
	
		
			
				|  |  | +            res.header('Content-Disposition', `attachment; filename="${encodeURI(availCache[uuid].song_name)}.mp3"`);
 | 
	
		
			
				|  |  |              /** @type {ArrayBuffer}*/
 | 
	
		
			
				|  |  | -            availCache[uuid] = rows[0].databinary
 | 
	
		
			
				|  |  | -            res.sendSeekable(availCache[uuid])
 | 
	
		
			
				|  |  | +            res.sendSeekable(availCache[uuid].databinary)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          } catch (e) {
 | 
	
		
			
				|  |  | +            res.contentType("text/plain");
 | 
	
		
			
				|  |  | +            res.status(500).header("Access-Control-Allow-Origin", "*").end("Err.");
 | 
	
		
			
				|  |  |              console.log(e)
 | 
	
		
			
				|  |  |              console.log("Triggered err");
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -488,22 +479,17 @@ app.get('/:uuid', function (req, res) {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      if (availCache[uuid] !== undefined) {
 | 
	
		
			
				|  |  | -        db.execute(`SELECT song_name
 | 
	
		
			
				|  |  | -                    FROM instrunet_entry
 | 
	
		
			
				|  |  | -                    WHERE uuid = '${uuid}'`, (err, rows) => {
 | 
	
		
			
				|  |  | -            res.contentType("audio/mp3");
 | 
	
		
			
				|  |  | -            res.header("Access-Control-Allow-Origin", "*");
 | 
	
		
			
				|  |  | -            res.header("Access-Control-Allow-Headers", "Content-Type");
 | 
	
		
			
				|  |  | -            res.header("Access-Control-Allow-Origin", "*");
 | 
	
		
			
				|  |  | -            res.header('Content-Disposition', `attachment; filename="${encodeURI(rows[0].song_name)}"`);
 | 
	
		
			
				|  |  | -            res.sendSeekable(availCache[uuid])
 | 
	
		
			
				|  |  | -        })
 | 
	
		
			
				|  |  | +        res.contentType("audio/mp3");
 | 
	
		
			
				|  |  | +        res.header("Access-Control-Allow-Origin", "*");
 | 
	
		
			
				|  |  | +        res.header("Access-Control-Allow-Headers", "Content-Type");
 | 
	
		
			
				|  |  | +        res.header("Access-Control-Allow-Origin", "*");
 | 
	
		
			
				|  |  | +        res.header('Content-Disposition', `attachment; filename="${encodeURI(availCache[uuid].song_name)}.mp3"`);
 | 
	
		
			
				|  |  | +        res.sendSeekable(availCache[uuid].databinary)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      } else {
 | 
	
		
			
				|  |  | -        db.execute(`SELECT song_name, databinary
 | 
	
		
			
				|  |  | -                    FROM instrunet_entry
 | 
	
		
			
				|  |  | -                    WHERE uuid = '${uuid}'`, Provider)
 | 
	
		
			
				|  |  | -        db.unprepare()
 | 
	
		
			
				|  |  | +        db.execute("SELECT song_name, databinary FROM instrunet_entry WHERE uuid = ?", [uuid], Provider)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 |