forked from seekseek/ui
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.
48 lines
1.0 KiB
JavaScript
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;
|