Add search

This commit is contained in:
Rogerio Chaves 2020-04-05 14:51:25 +02:00
parent 075cad4236
commit 0ebcc46e6b
No known key found for this signature in database
GPG Key ID: E6AF5440509B1D94
5 changed files with 32 additions and 14 deletions

View File

@ -49,12 +49,11 @@ router.get("/", async (_req, res) => {
res.redirect("/about");
}
const [posts, people, friends] = await Promise.all([
const [posts, friends] = await Promise.all([
queries.getPosts(ssbServer),
queries.getPeople(ssbServer),
queries.getFriends(profile, ssbServer),
]);
res.render("index", { profile, posts, people, friends });
res.render("index", { profile, posts, friends });
});
router.post("/publish", async (req, res) => {
@ -103,6 +102,14 @@ router.get("/debug", async (_req, res) => {
res.render("debug", { profile, entries });
});
router.get("/search", async (req, res) => {
const query = req.query.query;
const people = await queries.searchPeople(ssbServer, query);
res.render("search", { profile, people });
});
const expressServer = app.listen(port, () =>
console.log(`Example app listening at http://localhost:${port}`)
);

View File

@ -92,7 +92,7 @@ const getPosts = (ssbServer) =>
);
});
const getPeople = (ssbServer) =>
const searchPeople = (ssbServer, search) =>
new Promise((resolve, reject) => {
pull(
ssbServer.query.read({
@ -111,7 +111,11 @@ const getPeople = (ssbServer) =>
],
}),
pull.filter((msg) => {
return msg.value.content && msg.value.author == msg.value.content.about;
return (
msg.value.content &&
msg.value.author == msg.value.content.about &&
msg.value.content.name.includes(search)
);
}),
pull.collect((err, msgs) => {
const entries = msgs.map((x) => x.value);
@ -170,7 +174,7 @@ const getAllEntries = (ssbServer) =>
module.exports = {
mapAuthorName,
getPosts,
getPeople,
searchPeople,
getFriends,
getAllEntries,
};

View File

@ -28,6 +28,10 @@
<div style="float: right">
<%= profile.name %> (<%= profile.id.slice(0, 8) %>)
</div>
<form action="search" method="GET" style="float: right; padding-right: 10px">
<input type="text" name="query" placeholder="Search for people...">
<input type="submit" value="Search" />
</form>
<nav>
<a href="/">Home</a>
<a href="/about">About me</a>

View File

@ -10,14 +10,6 @@
<hr />
<% }) %>
<h2>All People</h2>
<ul>
<% people.map(person => { %>
<li><%= person.content.name %> (<%= person.author.slice(0, 8) %>)</li>
<% }) %>
</ul>
<h2>Friends</h2>
<ul>

11
app/views/search.ejs Normal file
View File

@ -0,0 +1,11 @@
<%- include('_header') %>
<h2>Results</h2>
<ul>
<% people.map(person => { %>
<li><%= person.content.name %> (<%= person.author.slice(0, 8) %>)</li>
<% }) %>
</ul>
<%- include('_footer') %>