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 config = require('../config.js');
var databases = require('../databases/databases.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 getHash = require('../utils/getHash.js');
const isUserVIP = require('../utils/isUserVIP.js'); const isUserVIP = require('../utils/isUserVIP.js');
const logger = require('../utils/logger.js');
module.exports = (req, res) => { module.exports = (req, res) => {
// Collect user input data // Collect user input data
@@ -27,5 +29,34 @@ module.exports = (req, res) => {
return; 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', () => { describe('postNoSegments', () => {
before(() => { before(() => {
db.exec("INSERT INTO vipUsers (userID) VALUES ('" + getHash("VIPUser-noSegments") + "')"); 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) => { 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); 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 = { let json = {
videoID: 'noSegmentsTestVideoID', videoID: 'no-segments-video-id',
userID: 'VIPUser-noSegments', userID: 'VIPUser-noSegments',
categorys: [ categorys: [
'sponsor' 'outro',
'shilling',
'shilling',
'intro'
]
};
let expected = {
status: 200,
submitted: [
'outro',
'shilling'
] ]
}; };
@@ -31,12 +45,11 @@ describe('postNoSegments', () => {
(err, res, body) => { (err, res, body) => {
if (err) done(err); if (err) done(err);
else if (res.statusCode === 200) { else if (res.statusCode === 200) {
//let row = db.prepare('get', "SELECT startTime, endTime, category FROM sponsorTimes WHERE videoID = ?", ["noSegmentsTestVideoID"]); if (JSON.stringify(body) === JSON.stringify(expected)) {
//if (row.startTime === 2 && row.endTime === 10 && row.category === "sponsor") { done();
done() } else {
//} else { done("Incorrect response: expected " + JSON.stringify(expected) + " got " + JSON.stringify(body));
// done("Submitted times were not saved. Actual submission: " + JSON.stringify(row)); }
//}
} else { } else {
console.log(body); console.log(body);
done("Status code was " + res.statusCode); done("Status code was " + res.statusCode);
@@ -166,7 +179,7 @@ describe('postNoSegments', () => {
(err, res, body) => { (err, res, body) => {
if (err) done(err); if (err) done(err);
else if (res.statusCode === 403) { else if (res.statusCode === 403) {
done() done();
} else { } else {
done("Status code was " + res.statusCode); done("Status code was " + res.statusCode);
} }