Skip to content

Commit

Permalink
Merge pull request #60 from akb89/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
akb89 committed Aug 21, 2018
2 parents a93ffec + b8e7be3 commit 6457ecd
Show file tree
Hide file tree
Showing 22 changed files with 188 additions and 157 deletions.
16 changes: 12 additions & 4 deletions logger/logger.js
Original file line number Diff line number Diff line change
@@ -1,35 +1,43 @@
const winston = require('winston');

const warn = new (winston.Logger)({
const myFormat = winston.format.combine(winston.format.timestamp(),
winston.format.colorize(),
winston.format.printf(logged => `[${logged.timestamp}] ${logged.level}: ${logged.message}`));

const warn = winston.createLogger({
transports: [
new (winston.transports.Console)({
format: myFormat,
level: 'warn',
colorize: true,
}),
],
});

const info = new (winston.Logger)({
const info = winston.createLogger({
transports: [
new (winston.transports.Console)({
format: myFormat,
level: 'info',
colorize: true,
}),
],
});

const verbose = new (winston.Logger)({
const verbose = winston.createLogger({
transports: [
new (winston.transports.Console)({
format: myFormat,
level: 'verbose',
colorize: true,
}),
],
});

const debug = new (winston.Logger)({
const debug = winston.createLogger({
transports: [
new (winston.transports.Console)({
format: myFormat,
level: 'debug',
colorize: true,
}),
Expand Down
6 changes: 3 additions & 3 deletions middlewares/core/patterns.js
Original file line number Diff line number Diff line change
Expand Up @@ -73,9 +73,9 @@ async function retrievePatternsIDs(context, next) {
const valenceUnitsIDs = context.valencer.results.tmp.valenceUnitsIDs;
if (valenceUnitsIDs) {
const excludedVUids = context.valencer.results.tmp.excludedVUids;
const patternsIDs =
await getPatternIDsWithPatternModel(context.valencer.models.Pattern)(valenceUnitsIDs,
excludedVUids);
const pModel = context.valencer.models.Pattern;
const patternsIDs = await getPatternIDsWithPatternModel(pModel)(valenceUnitsIDs,
excludedVUids);
context.valencer.results.tmp.patternsIDs = patternsIDs || [];
}
logger.debug(`context.valencer.results.tmp.patternsIDs.length = ${context.valencer.results.tmp.patternsIDs.length}`);
Expand Down
24 changes: 11 additions & 13 deletions middlewares/core/valenceUnits.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ const logger = config.logger;
* single valenceUnit inside a tokenArray pattern (@see formatter)
*
*/
function getValenceUnitsIDsWithValenceUnitModel(ValenceUnit) {
function getVUIDsWithValenceUnitModel(ValenceUnit) {
return async function getValenceUnitsIDs(valenceUnitAsArrayWithFEids) {
const valenceUnit = { FE: undefined, PT: undefined, GF: undefined };
for (const token of valenceUnitAsArrayWithFEids) {
Expand Down Expand Up @@ -57,11 +57,10 @@ function getValenceUnitsIDsWithValenceUnitModel(ValenceUnit) {
};
}

function getArrayOfArrayOfValenceUnitsIDsWithValenceUnitModel(ValenceUnit) {
function getArrayOfArrayOfVUidsWithValenceUnitModel(ValenceUnit) {
return async function getArrayOfArrayOfValenceUnitsIDs(formattedValencePatternArrayWithFEids) {
return Promise.all(formattedValencePatternArrayWithFEids
.map(valenceUnitAsArrayWithFEids =>
getValenceUnitsIDsWithValenceUnitModel(ValenceUnit)(valenceUnitAsArrayWithFEids)));
.map(vuAsArrayWithFEids => getVUIDsWithValenceUnitModel(ValenceUnit)(vuAsArrayWithFEids)));
};
}

Expand All @@ -73,8 +72,7 @@ async function retrieveValenceUnitsIDs(context, next) {
const startTime = utils.getStartTime();
const vuModel = context.valencer.models.ValenceUnit;
const vpWithFEids = context.valencer.query.vp.withFEids;
const valenceUnitsIDs =
await getArrayOfArrayOfValenceUnitsIDsWithValenceUnitModel(vuModel)(vpWithFEids);
const valenceUnitsIDs = await getArrayOfArrayOfVUidsWithValenceUnitModel(vuModel)(vpWithFEids);
context.valencer.results.tmp.valenceUnitsIDs = valenceUnitsIDs || [];
logger.debug(`context.valencer.results.tmp.valenceUnitsIDs.length = ${context.valencer.results.tmp.valenceUnitsIDs.length}`);
logger.verbose(`context.valencer.results.tmp.valenceUnitsIDs retrieved from database in ${utils.getElapsedTime(startTime)}ms`);
Expand Down Expand Up @@ -119,20 +117,20 @@ async function retrieveExcludedVUIDs(context, next) {
// Do this only if withExtraCoreFEs is set to false
const startTime = utils.getStartTime();
if (!context.query.withExtraCoreFEs) {
context.valencer.query.feNamesSet =
await getFrameElementNamesSet(context.valencer.query.vp.formatted,
context.valencer.query.vp.withFEids);
const feNamesSet = await getFrameElementNamesSet(context.valencer.query.vp.formatted,
context.valencer.query.vp.withFEids);
context.valencer.query.feNamesSet = feNamesSet;
logger.verbose(`context.valencer.results.tmp.feNamesSet retrieved from database in ${utils.getElapsedTime(startTime)}ms`);
const startTime2 = utils.getStartTime();
const feModel = context.valencer.models.FrameElement;
context.valencer.results.tmp.excludedFEids =
await getExcludedFEidsWithFEmodel(feModel)(context.valencer.query.feNamesSet);
const excludedFEids = await getExcludedFEidsWithFEmodel(feModel)(feNamesSet);
context.valencer.results.tmp.excludedFEids = excludedFEids;
logger.debug(`context.valencer.results.tmp.excludedFEids.length = ${context.valencer.results.tmp.excludedFEids.length}`);
logger.verbose(`context.valencer.results.tmp.excludedFEids retrieved from database in ${utils.getElapsedTime(startTime2)}ms`);
const startTime3 = utils.getStartTime();
const vuModel = context.valencer.models.ValenceUnit;
context.valencer.results.tmp.excludedVUids =
await getExcludedVUidsWithVUmodel(vuModel)(context.valencer.results.tmp.excludedFEids);
const exVUids = await getExcludedVUidsWithVUmodel(vuModel)(excludedFEids);
context.valencer.results.tmp.excludedVUids = exVUids;
logger.verbose(`context.valencer.results.tmp.excludedVUids retrieved from database in ${utils.getElapsedTime(startTime3)}ms`);
}
logger.debug(`context.valencer.results.tmp.excludedVUids.length = ${context.valencer.results.tmp.excludedVUids.length}`);
Expand Down
4 changes: 3 additions & 1 deletion middlewares/database.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
const mongoose = require('mongoose');
const config = require('./../config');
const nfc = require('noframenet-core');
const config = require('./../config');

const logger = config.logger;

mongoose.set('useCreateIndex', true);

function connect() {
return async function aconnect(context, next) {
const dbName = context.valencer.dbName;
Expand Down
10 changes: 6 additions & 4 deletions middlewares/filter.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,12 @@ async function filterPatternsIDs(context, next) {
logger.debug(`Filtering patternsIDs with strictVUMatching = ${context.query.strictVUMatching}`);
const startTime = utils.getStartTime();
const patternModel = context.valencer.models.Pattern;
context.valencer.results.tmp.filteredPatternsIDs =
await getFilteredPIDsWithPModel(patternModel)(context.valencer.results.tmp.patternsIDs,
context.valencer.results.tmp.valenceUnitsIDs,
context.query.strictVUMatching);
const pIDs = context.valencer.results.tmp.patternsIDs;
const vuIDs = context.valencer.results.tmp.valenceUnitsIDs;
const fpIDs = await getFilteredPIDsWithPModel(patternModel)(pIDs,
vuIDs,
context.query.strictVUMatching);
context.valencer.results.tmp.filteredPatternsIDs = fpIDs;
logger.debug(`context.valencer.results.tmp.filteredPatternsIDs.length = ${context.valencer.results.tmp.filteredPatternsIDs.length}`);
logger.verbose(`context.valencer.results.tmp.filteredPatternsIDs processed in ${utils.getElapsedTime(startTime)}ms`);
return next();
Expand Down
37 changes: 19 additions & 18 deletions middlewares/formatter.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,20 +19,20 @@ const logger = config.logger;
* to full valid FrameNet PhraseType and GrammaticalFunctions.
*/
function convertPTandGFtoFNstyle(context, next) {
context.valencer.query.vp.formatted = context.valencer.query.vp.formatted.map(vu =>
vu.reduce((array, item) => {
if (Object.prototype.hasOwnProperty.call(constants.UD_TO_FN_MAPPING, item)) {
context.valencer.query.vp.hasUDtags = true;
array.push(constants.UD_TO_FN_MAPPING[item].PT);
array.push(constants.UD_TO_FN_MAPPING[item].GF);
} else if (Object.prototype.hasOwnProperty.call(constants.PENN_CONST_TO_FN_MAPPING, item)) {
context.valencer.query.vp.hasPENNtags = true;
array.push(constants.PENN_CONST_TO_FN_MAPPING[item]);
} else {
array.push(item);
}
return array;
}, []));
const fVPq = context.valencer.query.vp.formatted.map(vu => vu.reduce((array, item) => {
if (Object.prototype.hasOwnProperty.call(constants.UD_TO_FN_MAPPING, item)) {
context.valencer.query.vp.hasUDtags = true;
array.push(constants.UD_TO_FN_MAPPING[item].PT);
array.push(constants.UD_TO_FN_MAPPING[item].GF);
} else if (Object.prototype.hasOwnProperty.call(constants.PENN_CONST_TO_FN_MAPPING, item)) {
context.valencer.query.vp.hasPENNtags = true;
array.push(constants.PENN_CONST_TO_FN_MAPPING[item]);
} else {
array.push(item);
}
return array;
}, []));
context.valencer.query.vp.formatted = fVPq;
logger.debug(`Formatted query after mapping = ${JSON.stringify(context.valencer.query.vp.formatted)}`);
return next();
}
Expand Down Expand Up @@ -93,8 +93,9 @@ function getVPasArrayWithFEidsWithFEmodel(FrameElement) {

async function replaceFrameElementNamesByFrameElementIds(context, next) {
const feModel = context.valencer.models.FrameElement;
context.valencer.query.vp.withFEids =
await getVPasArrayWithFEidsWithFEmodel(feModel)(context.valencer.query.vp.formatted);
const fVPq = context.valencer.query.vp.formatted;
const qWithFEids = await getVPasArrayWithFEidsWithFEmodel(feModel)(fVPq);
context.valencer.query.vp.withFEids = qWithFEids;
logger.debug(`context.valencer.query.vp.withFEids = ${JSON.stringify(context.valencer.query.vp.withFEids)}`);
return next();
}
Expand Down Expand Up @@ -173,8 +174,8 @@ function extractFEnamesSetWithFEmodel(FrameElement) {

async function extractFEnamesSet(context, next) {
const feModel = context.valencer.models.FrameElement;
context.valencer.query.feNamesSet =
await extractFEnamesSetWithFEmodel(feModel)(context.valencer.query.vp.formatted);
const fVPq = context.valencer.query.vp.formatted;
context.valencer.query.feNamesSet = await extractFEnamesSetWithFEmodel(feModel)(fVPq);
return next();
}

Expand Down
2 changes: 1 addition & 1 deletion middlewares/processors/annotationSets.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
const Promise = require('bluebird');
const config = require('../../config');
const utils = require('../../utils/utils');
const Promise = require('bluebird');

const logger = config.logger;

Expand Down
10 changes: 5 additions & 5 deletions middlewares/processors/cluster.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ async function getFrames(context, next) {
const startTime = utils.getStartTime();
logger.info(`Querying for all cluster frames with a valence pattern matching: '${context.query.vp}'`);
const frModel = context.valencer.models.FrameRelation;
context.valencer.results.cluster =
await getClusterFramesWithModel(frModel)(context.valencer.results.frames);
const cluster = await getClusterFramesWithModel(frModel)(context.valencer.results.frames);
context.valencer.results.cluster = cluster;
logger.verbose(`${context.valencer.results.cluster.length} cluster frames retrieved from database in ${utils.getElapsedTime(startTime)}ms`);
return next();
}
Expand All @@ -64,9 +64,9 @@ async function getLexUnits(context, next) {
${context.valencer.query.frameID} with a valence pattern matching:
'${context.query.vp}'`);
const luModel = context.valencer.models.LexUnit;
context.valencer.results.cluster =
await getClusterLexUnitsWithModel(luModel)(context.valencer.results.lexUnits,
context.valencer.query.frameID);
const cluster = await getClusterLexUnitsWithModel(luModel)(context.valencer.results.lexUnits,
context.valencer.query.frameID);
context.valencer.results.cluster = cluster;
logger.verbose(`${context.valencer.results.cluster.length} cluster lexUnits retrieved from database in ${utils.getElapsedTime(startTime)}ms`);
return next();
}
Expand Down
7 changes: 4 additions & 3 deletions middlewares/processors/feHierarchy.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,10 @@ async function getByVP(context, next) {
logger.info(`Querying for FEHierarchy with vp = '${context.query.vp}'`);
logger.verbose(`Corresponding feNamesSet = '${Array.from(context.valencer.query.feNamesSet)}'`);
const feHierarchyModel = context.valencer.models.FEHierarchy;
const results =
await getFEhierarchyWithModel(feHierarchyModel)(context.valencer.query.feNamesSet,
context.valencer.query.projections);
const feNamesSet = context.valencer.query.feNamesSet;
const projections = context.valencer.query.projections;
const results = await getFEhierarchyWithModel(feHierarchyModel)(feNamesSet,
projections);
context.valencer.results.feHierarchy = results;
logger.verbose(`feHierarchy retrieved from database in ${utils.getElapsedTime(startTime)}ms`);
return next();
Expand Down
6 changes: 3 additions & 3 deletions middlewares/processors/frame.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ async function getByID(context, next) {
const startTime = utils.getStartTime();
logger.info(`Querying for Frame with _id = ${context.params.id}`);
const frameModel = context.valencer.models.Frame;
context.body =
await getFrameWithFrameModel(frameModel)(context.params.id, context.valencer.query.projections,
context.valencer.query.populations);
context.body = await getFrameWithFrameModel(frameModel)(context.params.id,
context.valencer.query.projections,
context.valencer.query.populations);
logger.verbose(`Frame with _id = ${context.params.id} retrieved from database in ${utils.getElapsedTime(startTime)}ms`);
return next();
}
Expand Down
6 changes: 3 additions & 3 deletions middlewares/processors/frameHierarchy.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ async function getByName(context, next) {
const startTime = utils.getStartTime();
logger.info(`Querying for FrameHierarchy for Frame with name = ${context.query.frameName}`);
const frameHierarchyModel = context.valencer.models.FrameHierarchy;
context.body =
await getFrameHierarchyWithModel(frameHierarchyModel)(context.query.frameName,
context.valencer.query.projections);
const projections = context.valencer.query.projections;
context.body = await getFrameHierarchyWithModel(frameHierarchyModel)(context.query.frameName,
projections);
logger.verbose(`FrameHierarchy retrieved from database in ${utils.getElapsedTime(startTime)}ms`);
return next();
}
Expand Down
4 changes: 2 additions & 2 deletions middlewares/processors/frames.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ async function getByVP(context, next) {
const startTime = utils.getStartTime();
logger.info(`Querying for Frames with skip = '${context.valencer.query.skip}', limit = '${context.valencer.query.limit}' and vp = '${context.query.vp}'`);
const annoSetModel = context.valencer.models.AnnotationSet;
const frameIDs =
await getFrameIDsWithModel(annoSetModel)(context.valencer.results.tmp.filteredPatternsIDs);
const fpIDs = context.valencer.results.tmp.filteredPatternsIDs;
const frameIDs = await getFrameIDsWithModel(annoSetModel)(fpIDs);
const [count, results] = await Promise.all([
getFramesWithModel(context.valencer.models.Frame)(frameIDs, true),
getFramesWithModel(context.valencer.models.Frame)(frameIDs, false,
Expand Down
4 changes: 2 additions & 2 deletions middlewares/processors/lexUnits.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ async function getByVP(context, next) {
const startTime = utils.getStartTime();
logger.info(`Querying for LexUnits with skip = '${context.valencer.query.skip}', limit = '${context.valencer.query.limit}' and vp = '${context.query.vp}'`);
const annosetModel = context.valencer.models.AnnotationSet;
const lexUnitIDs =
await getLexUnitIDsWithModel(annosetModel)(context.valencer.results.tmp.filteredPatternsIDs);
const fpIDs = context.valencer.results.tmp.filteredPatternsIDs;
const lexUnitIDs = await getLexUnitIDsWithModel(annosetModel)(fpIDs);
const [count, results] = await Promise.all([
getLexUnitsWithModel(context.valencer.models.LexUnit)(lexUnitIDs, true),
getLexUnitsWithModel(context.valencer.models.LexUnit)(lexUnitIDs, false,
Expand Down
16 changes: 8 additions & 8 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "Valencer",
"version": "5.4.1",
"version": "5.4.2",
"description": "A REST API to query valence patterns in FrameNet",
"keywords": [
"FrameNet",
Expand Down Expand Up @@ -56,24 +56,24 @@
"kcors": "^2.2.1",
"koa": "^2.2.0",
"koa-compose": "^4.0.0",
"koa-compress": "^2.0.0",
"koa-compress": "^3.0.0",
"koa-router": "^7.2.0",
"mongoose": "^5.0.0",
"noframenet-core": "^5.4.2",
"pm2": "^2.6.1",
"winston": "^2.3.1"
"pm2": "^3.0.3",
"winston": "^3.0.0"
},
"devDependencies": {
"apidoc": "^0.17.6",
"chai": "^4.1.1",
"coveralls": "^3.0.0",
"eslint": "^4.16.0",
"eslint-config-airbnb": "^16.1.0",
"eslint": "^5.4.0",
"eslint-config-airbnb": "^17.1.0",
"eslint-plugin-import": "^2.3.0",
"eslint-plugin-jsx-a11y": "^6.0.3",
"eslint-plugin-react": "^7.1.0",
"mocha": "^5.0.0",
"nyc": "^11.0.2",
"rewire": "^3.0.2"
"nyc": "^13.0.1",
"rewire": "^4.0.1"
}
}
8 changes: 5 additions & 3 deletions server.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ const zlib = require('zlib');
const router = require('./routes');
const config = require('./config');

mongoose.set('useCreateIndex', true);

const logger = config.logger;
const app = new Koa();

Expand All @@ -29,7 +31,7 @@ app.use(async (context, next) => {
try {
await next();
} catch (err) {
logger.error(err);
logger.error(err.message);
err.expose = true; // expose the error to the context;
context.status = err.status || 500;
context.body = err.message;
Expand All @@ -52,8 +54,8 @@ function printLogo() {
printLogo();
const dbServer = config.databases.server;
const dbPort = config.databases.port;
const dbUri = `mongodb://${dbServer}:${dbPort}`;
await mongoose.connect(dbUri);
const dbUri = `mongodb://${dbServer}:${dbPort}/''`;
await mongoose.connect(dbUri, { useNewUrlParser: true });
logger.info(`Connected to MongoDB on server: '${dbServer}' and port '${dbPort}'`);
await app.listen(config.api.port);
logger.info(`Valencer started on port ${config.api.port}`);
Expand Down
Loading

0 comments on commit 6457ecd

Please sign in to comment.