You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ui/src/app.js

48 lines
1.0 KiB
JavaScript

"use strict";
const Promise = require("bluebird");
const express = require("express");
const path = require("path");
const knex = require("knex")(require("../knexfile"));
let app = express();
app.set("views", path.join(__dirname, "views"));
app.set("view engine", "jsx");
app.engine("jsx", require("@joepie91/express-react-views").createEngine());
app.use(express.static(path.join(__dirname, "../public")));
app.get("/", (req, res) => {
res.redirect("/datasheets");
});
app.get("/datasheets", (req, res) => {
res.render("index");
});
app.post("/search", (req, res) => {
return Promise.try(() => {
return knex.raw(`
SELECT
data->>'manufacturer' AS manufacturer,
data->>'name' AS name,
data->>'url' AS url,
data->>'description' AS description,
data->>'source' AS source
FROM items WHERE
id LIKE 'datasheet:%'
AND lower(data->>'name') LIKE :query
ORDER BY name
LIMIT 20
`, {
query: req.query.query.toLowerCase() + "%"
});
}).then((result) => {
res.json({ results: result.rows });
});
});
module.exports = app;