Skip to content

Commit

Permalink
add user to sequences during adaptation
Browse files Browse the repository at this point in the history
ref #10-splitter-adapter
  • Loading branch information
maxgrossman committed Jun 13, 2018
1 parent 61e2059 commit ec7925b
Show file tree
Hide file tree
Showing 8 changed files with 93 additions and 59 deletions.
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
.env
.DS_Store
./db/*.db
./db/posm-paths.sqlite3
./testData/danbjoseph
.python_version
.vscode
node_modules
8 changes: 7 additions & 1 deletion adapters/sequence/helpers.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,10 @@ exports.calcDelta = (metaDate, nextMetaDate) => nextMetaDate.diff(metaDate) / 10
* @param {array} sequence sequence to be added to sequenceMap
* @return {object} updated sequenceMap
*/
exports.addSequence = (sequenceMap, sequence) => { sequenceMap[uuidv4()] = sequence; return sequenceMap };
exports.addSequence = (sequences, sequence) => {
sequences.push({
sequenceId: uuidv4(),
sequence: sequence
})
return sequences;
};
26 changes: 17 additions & 9 deletions adapters/sequence/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,13 @@ Promise = require('bluebird')
* @param {array} paths list of directory paths holding images to make sequences of
* @param {number} maxCutDist maximum distance allowed between two photos
* @param {number} minCutDist minimum distance allowed between two photos
* @param {cutTime} cutTime maximum time between two images
* @param {cutSize} cutSize maximum size of a sequence.
* @param {number} cutTime maximum time between two images
* @param {number} cutSize maximum size of a sequence.
* @param {string} userId (optional) userId that when present attached to each sequence
* @return {array} array of sequence configuration objects
*/

module.exports = (paths, minCutDist, maxCutDist, maxDelta, sequenceSize) => {
module.exports = (paths, minCutDist, maxCutDist, maxDelta, sequenceSize, userId) => {
return new Promise((resolve, reject) => {
Promise.map(paths, async (p) => {
const images = await fs.readdir(p);
Expand All @@ -26,12 +27,19 @@ module.exports = (paths, minCutDist, maxCutDist, maxDelta, sequenceSize) => {
.then(async (images) => {
try {
const params = {
maxDist: maxCutDist,
minDist: minCutDist,
maxDelta: maxDelta,
size: sequenceSize
},
sequences = await buildSequences(flatten(images), params);
maxDist: maxCutDist,
minDist: minCutDist,
maxDelta: maxDelta,
size: sequenceSize
};

let sequences = await buildSequences(flatten(images), params);
if (userId) {
sequences = sequences.map(sequence => {
sequence.userId = userId
return sequence
});
}

resolve(sequences);
} catch (e) {
Expand Down
2 changes: 1 addition & 1 deletion adapters/sequence/split.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Promise = require('bluebird');
module.exports = (metas, params) => {
const sortedMetas = metas.sort((a, b) => a.timestamp - b.timestamp),
pelIndex = sortedMetas.length - 2,
sequences = {},
sequences = [],
maxDist = params.maxDist,
maxDelta = params.maxDelta,
maxSize = params.maxSize,
Expand Down
13 changes: 7 additions & 6 deletions handlers/sequence/helpers.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
/**
* Provided parameters for a sequence and its images,
* inserts images into the image table
* @param {String} sequenceId sequence uuid
* @param {Array} sequence list of sequence images
* @param {String} userId user uuid
*/
exports.insertImages = (sequenceId, sequence, userId) => {
exports.insertImages = (sequence) => {
const sequenceId = sequence.sequenceId,
userId = sequence.userId;
Promise.map(sequence, image => {
return `(${image.id}, ${image.image}, ${image.timestamp}, ${sequenceId}, ${userId}, ${loc}),`
})
Expand All @@ -29,11 +29,12 @@ exports.insertImages = (sequenceId, sequence, userId) => {
/**
* Provided parameters for a sequence record,
* inserts sequence into Sequences table
* @param {String} sequenceId sequence uuid
* @param {Array} sequence list of sequence images
* @param {String} userId user uuid
*/
exports.insertSequence = (sequenceId, sequence, userId) => {
exports.insertSequence = (sequence) => {
const sequenceId = sequence.sequenceId,
userId = sequence.userId;

Promise.map(sequence, image => { return { id : image.id, loc: image.loc }})
.then(async (sequenceImages) => {
try {
Expand Down
28 changes: 14 additions & 14 deletions handlers/sequence/post.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,36 +3,36 @@
const Boom = require('boom');
const db = require('../../connection');
const uuidv4 = require('uuid/v4');
const insertImages = require('./helpers').insertImages;
const insertSequence = require('./helpers').insertSequence;
const buildSequences = require('../../adapters/sequence');
// const insertImages = require('./helpers').insertImages;
// const insertSequence = require('./helpers').insertSequence;

module.exports = async (r, h) => {
try {
const paths = r.payload,
userId = r.params.user,
user = r.query.userId,
minCutDist = r.params.minDist || 0.5,
maxCutDist = r.params.maxDist || 300,
maxDelta = r.params.maxDelta || 120,
sequenceSize = r.params.size || 0,
sequences = await buildSequences(paths, minCutDist, maxCutDist, maxDelta, sequenceSize);
sequences = await buildSequences(paths, minCutDist, maxCutDist, maxDelta, sequenceSize, userId);

sequences.forEach(async (sequence) => {
try {
const sequenceId = uuidv4();
console.log(sequenceId);
return {}
// await Promise.map([insertImages, insertSequence], async (builder) => {
// try {
// await builder(sequenceId, sequence, userId);
// } catch (e) {
// throw e;
// }
// })
await Promise.map([insertImages, insertSequence], async (builder) => {
try {
await builder(sequence);
} catch (e) {
throw e;
}
})
} catch (e) {
throw e;
}
})

return h.response({ upload: 'successful' }).code(200);

} catch (error) {
return Boom.badImplementation(error.message);
}
Expand Down
69 changes: 42 additions & 27 deletions test/sequence/handler.js
Original file line number Diff line number Diff line change
@@ -1,30 +1,45 @@
// 'use strict';
'use strict';

// const Joi = require('joi');
// const chai = require('chai');
// const expect = chai.expect;
// const server = require('../server');
// const mergeDefaults = require('../helpers').mergeDefaults;
// const routes = [
// require('../../routes/sequence').post
// ];
const Joi = require('joi');
const chai = require('chai');
const expect = chai.expect;

// before(async () => await server.liftOff(routes))
// describe('post', () => {
// it('replies 200 when successful creating/inserting image sequences', async () => {
// try {
// const request = mergeDefaults({
// method: 'POST',
// payload: require('../../testData/payloads.json').postSequence,
// url:'/sequence'
// }),
// r = await server.inject(request),
// statusCode = r.statusCode;

// expect(statusCode).to.equal(202);
// } catch (error) {
// console.error(error);
const uuidv4 = require('uuid/v4');

// }
// })
// })
const server = require('../server');
const mergeDefaults = require('../helpers').mergeDefaults;
const oldUserPayload = require('../../testData/payloads').postUser;
const routes = [
// require('../../routes/sequence').get,
require('../../routes/sequence').post
];

before(async () => await server.liftOff(routes))
describe('post', () => {
it('replies 200 when sequence post is successful', async () => {
try {
const request = mergeDefaults({
method: 'POST',
payload: ['/testData/danbjoseph'].map(p => process.cwd() + p),
url: '/sequence?userId=6cc99b2f-a00a-45c3-a74b-d532547dd852'
}),
r = await server.inject(request),
statusCode = r.statusCode;


expect(statusCode).to.be.eql(200);

} catch (error) {
console.error(error);

}
})
// it('replies 400 when unsuccessful because user already in db', async () => {
// })
})
// describe('get', () => {
// it ('replies 200 and username when given valid uuid', async () => {
// })
// it ('replies 400 when given user id invalid', async () => {
// })
// })
1 change: 1 addition & 0 deletions test/user/handler.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ describe('post', () => {
for (let i = 0; i < 5; i++) {
fakeName += letters.charAt(Math.floor(Math.random() * letters.length));
}

const request = mergeDefaults({
method: 'POST',
payload: { name: fakeName },
Expand Down

0 comments on commit ec7925b

Please sign in to comment.