Dockerfile backend and text search filter
This commit is contained in:
parent
61aac61469
commit
7e7dea46eb
27
backend/Dockerfile
Normal file
27
backend/Dockerfile
Normal 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" ]
|
||||||
@ -2,7 +2,8 @@ const router = require("express").Router();
|
|||||||
const _ = require('lodash')
|
const _ = require('lodash')
|
||||||
const getSearchPresets = require("../models/getSearchPresets.js");
|
const getSearchPresets = require("../models/getSearchPresets.js");
|
||||||
const base64 = require("../util/base64.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 => {
|
module.exports = dbConn => {
|
||||||
@ -57,8 +58,13 @@ function searchHandler(dbConn) {
|
|||||||
}
|
}
|
||||||
scoreAndSearch(q.from, q.to, scoreQueryObj).then(searchResults => {
|
scoreAndSearch(q.from, q.to, scoreQueryObj).then(searchResults => {
|
||||||
|
|
||||||
response.data = searchResults
|
//response.data = searchResults
|
||||||
response = searchResults
|
// FILTER if query contains filterString
|
||||||
|
if (q.textfilter) {
|
||||||
|
response = filterByString(searchResults, q.textfilter, q.fulltext)
|
||||||
|
} else {
|
||||||
|
response = searchResults
|
||||||
|
}
|
||||||
res.json(response)
|
res.json(response)
|
||||||
}).catch(e => {
|
}).catch(e => {
|
||||||
// TODO error handling
|
// TODO error handling
|
||||||
@ -66,4 +72,19 @@ function searchHandler(dbConn) {
|
|||||||
res.json(e.message)
|
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)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
@ -5,16 +5,16 @@ exports.getClimateMinMax = async function (dbConn) {
|
|||||||
MIN(temperature_mean_min) AS temperature_mean_min,
|
MIN(temperature_mean_min) AS temperature_mean_min,
|
||||||
MIN(temperature_mean_max) AS temperature_mean_max,
|
MIN(temperature_mean_max) AS temperature_mean_max,
|
||||||
MIN(precipitation) AS precipitation,
|
MIN(precipitation) AS precipitation,
|
||||||
MIN(raindays) AS rain_days,
|
MIN(rain_days) AS rain_days,
|
||||||
MIN(sunshine) AS sun_hours
|
MIN(sun_hours) AS sun_hours
|
||||||
FROM region_climate`
|
FROM region_climate`
|
||||||
const sqlMax = `SELECT
|
const sqlMax = `SELECT
|
||||||
MAX(temperature_mean) AS temperature_mean,
|
MAX(temperature_mean) AS temperature_mean,
|
||||||
MAX(temperature_mean_min) AS temperature_mean_min,
|
MAX(temperature_mean_min) AS temperature_mean_min,
|
||||||
MAX(temperature_mean_max) AS temperature_mean_max,
|
MAX(temperature_mean_max) AS temperature_mean_max,
|
||||||
MAX(precipitation) AS precipitation,
|
MAX(precipitation) AS precipitation,
|
||||||
MAX(raindays) AS rain_days,
|
MAX(rain_days) AS rain_days,
|
||||||
MAX(sunshine) AS sun_hours
|
MAX(sun_hours) AS sun_hours
|
||||||
FROM region_climate`
|
FROM region_climate`
|
||||||
const [qResMin, qResMax] = await Promise.all([dbConn.query(sqlMin), dbConn.query(sqlMax)])
|
const [qResMin, qResMax] = await Promise.all([dbConn.query(sqlMin), dbConn.query(sqlMax)])
|
||||||
// console.log(qResMin)
|
// console.log(qResMin)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user