Dockerfile backend and text search filter

This commit is contained in:
Timo Volkmann 2020-06-18 15:19:45 +02:00
parent 61aac61469
commit 7e7dea46eb
3 changed files with 55 additions and 7 deletions

27
backend/Dockerfile Normal file
View File

@ -0,0 +1,27 @@
FROM node:12
# Create app directory
WORKDIR /usr/src/app
# COPY package.json .
# For npm@5 or later, copy package-lock.json as well
COPY package.json package-lock.json ./
# Install app dependencies
RUN npm install
# Bundle app source
COPY . .
ENV PORT=3000
ENV METEOSTAT_API_KEY=LMlDskju
ENV DB_HOST=127.0.0.1
ENV DB_USER=root
ENV DB_PASSWORD=devtest
ENV DB_PORT=3306
ENV DATABASE=travopti
EXPOSE 3000
# Start Node server
CMD [ "node", "./index.js" ]

View File

@ -2,7 +2,8 @@ const router = require("express").Router();
const _ = require('lodash')
const getSearchPresets = require("../models/getSearchPresets.js");
const base64 = require("../util/base64.js")
const sas = require("../util/scoreAndSearch.js")
const sas = require("../util/scoreAndSearch.js");
const { filter } = require("lodash");
module.exports = dbConn => {
@ -57,8 +58,13 @@ function searchHandler(dbConn) {
}
scoreAndSearch(q.from, q.to, scoreQueryObj).then(searchResults => {
response.data = searchResults
response = searchResults
//response.data = searchResults
// FILTER if query contains filterString
if (q.textfilter) {
response = filterByString(searchResults, q.textfilter, q.fulltext)
} else {
response = searchResults
}
res.json(response)
}).catch(e => {
// TODO error handling
@ -66,4 +72,19 @@ function searchHandler(dbConn) {
res.json(e.message)
})
}
}
function filterByString(searchResults, filterString, boolFulltext) {
return _.filter(searchResults, region => {
console.log("filtering: filterString, boolFulltext");
console.log(filterString, boolFulltext);
filterString = filterString.toLowerCase()
let name = region.name.toLowerCase()
let country = region.country.toLowerCase()
if (boolFulltext) {
let desc = region.description.toLowerCase()
return name.includes(filterString) || country.includes(filterString) || desc.includes(filterString)
}
return name.includes(filterString) || country.includes(filterString)
})
}

View File

@ -5,16 +5,16 @@ exports.getClimateMinMax = async function (dbConn) {
MIN(temperature_mean_min) AS temperature_mean_min,
MIN(temperature_mean_max) AS temperature_mean_max,
MIN(precipitation) AS precipitation,
MIN(raindays) AS rain_days,
MIN(sunshine) AS sun_hours
MIN(rain_days) AS rain_days,
MIN(sun_hours) AS sun_hours
FROM region_climate`
const sqlMax = `SELECT
MAX(temperature_mean) AS temperature_mean,
MAX(temperature_mean_min) AS temperature_mean_min,
MAX(temperature_mean_max) AS temperature_mean_max,
MAX(precipitation) AS precipitation,
MAX(raindays) AS rain_days,
MAX(sunshine) AS sun_hours
MAX(rain_days) AS rain_days,
MAX(sun_hours) AS sun_hours
FROM region_climate`
const [qResMin, qResMax] = await Promise.all([dbConn.query(sqlMin), dbConn.query(sqlMax)])
// console.log(qResMin)