added ability for vips to submit segments not in a video

This commit is contained in:
Joe Dowd 2020-08-22 03:05:51 +01:00
parent 44ea0c418a
commit f53c541538
3 changed files with 55 additions and 12 deletions

View file

@ -1,4 +1,3 @@
var fs = require('fs');
var config = require('../config.js');
var databases = require('../databases/databases.js');

View file

@ -1,5 +1,7 @@
const db = require('../databases/databases.js').db;
const getHash = require('../utils/getHash.js');
const isUserVIP = require('../utils/isUserVIP.js');
const logger = require('../utils/logger.js');
module.exports = (req, res) => {
// Collect user input data
@ -27,5 +29,34 @@ module.exports = (req, res) => {
return;
}
res.status(200).json({status: 200});
// Get existing no segment markers
let noSegmentList = db.prepare('all', 'SELECT category from noSegments where videoID = ?', [videoID]);
if (!noSegmentList || noSegmentList.length === 0) {
noSegmentList = [];
} else {
noSegmentList = noSegmentList.map((obj) => {
return obj.category;
});
}
// get user categorys not already submitted
let categorysToMark = categorys.filter((category) => {
return noSegmentList.indexOf(category) === -1;
});
// remove any duplicates
categorysToMark = categorysToMark.filter((category, index) => {
return categorysToMark.indexOf(category) === index;
});
// create database entry
categorysToMark.forEach((category) => {
db.prepare('run', "INSERT INTO noSegments (videoID, userID, category) VALUES(?, ?, ?)", [videoID, userID, category]);
//ogger.debug('submitting ' + category);
});
res.status(200).json({
status: 200,
submitted: categorysToMark
});
};

View file

@ -9,6 +9,9 @@ var db = databases.db;
describe('postNoSegments', () => {
before(() => {
db.exec("INSERT INTO vipUsers (userID) VALUES ('" + getHash("VIPUser-noSegments") + "')");
db.exec("INSERT INTO noSegments (userID, videoID, category) VALUES ('" + getHash("VIPUser-noSegments") + "', 'no-segments-video-id', 'sponsor')");
db.exec("INSERT INTO noSegments (userID, videoID, category) VALUES ('" + getHash("VIPUser-noSegments") + "', 'no-segments-video-id', 'intro')");
});
it('should update the database version when starting the application', (done) => {
@ -17,12 +20,23 @@ describe('postNoSegments', () => {
else done('Version isn\'t greater that 1. Version is ' + version);
});
it('Should be able to submit no segments', (done) => {
it('Should be able to submit categorys not in video', (done) => {
let json = {
videoID: 'noSegmentsTestVideoID',
videoID: 'no-segments-video-id',
userID: 'VIPUser-noSegments',
categorys: [
'sponsor'
'outro',
'shilling',
'shilling',
'intro'
]
};
let expected = {
status: 200,
submitted: [
'outro',
'shilling'
]
};
@ -31,12 +45,11 @@ describe('postNoSegments', () => {
(err, res, body) => {
if (err) done(err);
else if (res.statusCode === 200) {
//let row = db.prepare('get', "SELECT startTime, endTime, category FROM sponsorTimes WHERE videoID = ?", ["noSegmentsTestVideoID"]);
//if (row.startTime === 2 && row.endTime === 10 && row.category === "sponsor") {
done()
//} else {
// done("Submitted times were not saved. Actual submission: " + JSON.stringify(row));
//}
if (JSON.stringify(body) === JSON.stringify(expected)) {
done();
} else {
done("Incorrect response: expected " + JSON.stringify(expected) + " got " + JSON.stringify(body));
}
} else {
console.log(body);
done("Status code was " + res.statusCode);
@ -166,7 +179,7 @@ describe('postNoSegments', () => {
(err, res, body) => {
if (err) done(err);
else if (res.statusCode === 403) {
done()
done();
} else {
done("Status code was " + res.statusCode);
}