Skip to content
This repository was archived by the owner on Oct 23, 2023. It is now read-only.
Draft
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
973 changes: 973 additions & 0 deletions package-lock.json

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"main": "server/app.js",
"scripts": {
"start": "node server/app.js",
"dev": "nodemon server/app.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"engines": {
Expand All @@ -15,5 +16,8 @@
"dependencies": {
"express": "^4.16.4",
"moment": "^2.22.2"
},
"devDependencies": {
"nodemon": "^2.0.7"
}
}
14 changes: 14 additions & 0 deletions server/DAO/DatesDAO.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
const { Dates } = require('../models/Identifier')

class DatesDAO {


getAllDates = () => Dates

getDate = (name) => {
let timeFound = Dates.find(ele => ele.names.includes(name.toLowerCase()) ? ele.value : null)
return timeFound ? [{ value: timeFound.value, type: 'date'}] : []
}

}
module.exports = DatesDAO
19 changes: 19 additions & 0 deletions server/DAO/MealtimeDAO.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
const {MealTimes} = require('../models/Identifier')

class MealtimeDAO {


getAllMealtimes = () => MealTimes

getMealtime = (type) => {
let mealtimeFound
MealTimes.forEach(ele => {
if(ele.names.includes(type.toLowerCase())){
mealtimeFound = ele.value
}
})
return mealtimeFound ? [{value: mealtimeFound, type: "mealtime"}] : []
}
}

module.exports = MealtimeDAO
Empty file added server/DAO/PostQueryDAO.js
Empty file.
15 changes: 15 additions & 0 deletions server/DAO/StopwordDAO.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
const stopWordList = require('../models/StopWord')

class StopwordDAO {


getAllStopwords = () => stopWordList


getStopword = (word) => {
const wordFound = stopWordList.find(ele => ele === word.toLowerCase())

return wordFound ? [{value: wordFound, type: "stopword"} ] : []
}
}
module.exports = StopwordDAO
20 changes: 18 additions & 2 deletions server/app.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
const express = require('express');

const app = express();
const PORT = process.env.PORT || 3000;

//import routers
const mealtimesRouter = require('./routes/mealtimesRoutes')
const datesRouter = require('./routes/datesRoutes')
const stopwordsRouter = require('./routes/stopwordsRoutes')
const postQueryRouter = require('./routes/postQueryAnalysis')

//use routers middleware
app.use('/', mealtimesRouter)
app.use('/', datesRouter)
app.use('/', stopwordsRouter)
app.use('/', postQueryRouter)





//TODO: Add an express router
app.listen(PORT, 'localhost')
6 changes: 3 additions & 3 deletions server/models/Identifier.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,19 +29,19 @@ const MealTimes = [

const Dates = [
{
value: moment(),
value: moment().format("L"),
names: [
"today", "now", "currently"
]
},
{
value: moment().add(-1, 'day').toDate(),
value: moment().add(-1, 'day').format("L"),
names: [
"yesterday"
]
},
{
value: moment().add(1, 'day').toDate(),
value: moment().add(1, 'day').format("L"),
names: [
"tomorrow"
]
Expand Down
10 changes: 6 additions & 4 deletions server/models/StopWord.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{const stopWordList =
{
const stopWordList =
[
"a",
"about",
Expand Down Expand Up @@ -151,8 +152,9 @@
"yourselves"
];

const isStopWord = (word) => {
//TODO Fill this in
return false;
const isStopWord = (word) => (stopWordList.includes(word))


module.exports = stopWordList
};

36 changes: 36 additions & 0 deletions server/routes/datesRoutes.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
const dateParser = require('../services/Parser')
const parseIt = new dateParser()
const express = require('express');
const { all } = require('./mealtimesRoutes');
const router = express.Router()


router.get('/dates', (req, res) => {
let dateReturned
try{
const { date } = req.query
if(date){
dateReturned = parseIt.getDate(date)
}
const allDates = parseIt.getAllDates()
let data = !dateReturned ? allDates : dateReturned

if(data.length < 1){
return res.json({
status: 'failure',
data
})
}else{
return res.json({
status: 'success',
data
})
}
}catch(err){
console.log(err)
}
})



module.exports = router
34 changes: 34 additions & 0 deletions server/routes/mealtimesRoutes.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
const mealtimeParser = require('../services/Parser')
const parseIt = new mealtimeParser()
const express = require('express');
const router = express.Router()

router.get('/mealtimes', (req, res) => {
let value
try{
const { name } = req.query
if(name){
value = parseIt.getMealtime(name)
}
const allMealtimes = parseIt.getAllMealtimes()
let data = !value ? allMealtimes : value
if(data.length < 1){
return res.json({
status: 'failure',
data
})
}else{
return res.json({
status: 'success',
data
})
}


}catch(err){
console.log(err)
}
})


module.exports = router
47 changes: 47 additions & 0 deletions server/routes/postQueryAnalysis.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
const stopwordParser = require('../services/Parser')
const parseIt = new stopwordParser()
const express = require('express');
const router = express.Router()

let regex = /[^0-9a-z\s]/ig

router.post('/', (req, res) => {
try{
let { query } = req.query
let queryArr = query.replace(regex, '').split(' ')
let data = []


for(let i = 0; i < queryArr.length; i++) {
let dateVal = parseIt.getDate(queryArr[i])
let mealtimeVal = parseIt.getMealtime(queryArr[i])
let stopwordVal = parseIt.getStopword(queryArr[i])

if(dateVal.length > 0){
let dateValues = dateVal[0]
data.push({matchedWord: queryArr[i], type: dateValues.type, value: dateValues.value})

}
if(mealtimeVal.length > 0){
let mealtimeValues = mealtimeVal[0]
data.push({matchedWord: queryArr[i], type: mealtimeValues.type, value: mealtimeValues.value})

}
if(stopwordVal.length > 0){
let stopwordValues = stopwordVal[0]
data.push({matchedWord: queryArr[i], type: stopwordValues.type, value: stopwordValues.value})

}else{
data.push({matchedWord: queryArr[i], type: 'unknown', value: queryArr[i].toLowerCase()})
}
}
return res.json({
data
})
}catch(err) {
console.log(err)
}

})

module.exports = router
31 changes: 31 additions & 0 deletions server/routes/stopwordsRoutes.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
const stopwordParser = require('../services/Parser')
const parseIt = new stopwordParser()
const express = require('express');
const router = express.Router()


router.get('/stopwords', (req, res) => {
let wordFound
try{
const { word } = req.query
if(word) {
wordFound = parseIt.getStopword(word)
}
const allStopwords = parseIt.getAllStopwords()
let data = !wordFound ? allStopwords : wordFound
if(data.length < 1){
res.json({
status: 'failure',
data
})
}else{
res.json({
status: 'success',
data
})
}
}catch(err){
console.log(err)
}
})
module.exports = router
26 changes: 24 additions & 2 deletions server/services/Parser.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,30 @@
const {MealTimes, Dates} = require('../models/Identifier');
const StopWord = require('../models/StopWord');
const DatesDAO = require('../DAO/DatesDAO')
const MealtimeDAO = require('../DAO/MealtimeDAO')
const StopwordDAO = require('../DAO/StopwordDAO')



class Parser {
//TODO Parse through and identify all StopWords & Identifiers

//Dates Functions
datesdao = new DatesDAO()
getAllDates = () => this.datesdao.getAllDates()
getDate = (time) => this.datesdao.getDate(time)

//Mealtime Functions
mealtimedao = new MealtimeDAO()
getAllMealtimes = () => this.mealtimedao.getAllMealtimes()
getMealtime = (type) => this.mealtimedao.getMealtime(type)

//Stopword Functions
stopworddao = new StopwordDAO()
getAllStopwords = () => this.stopworddao.getAllStopwords()
getStopword = (word) => this.stopworddao.getStopword(word)



}

module.exports = Parser;