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"); res.redirect("/about");
} }
const [posts, people, friends] = await Promise.all([ const [posts, friends] = await Promise.all([
queries.getPosts(ssbServer), queries.getPosts(ssbServer),
queries.getPeople(ssbServer),
queries.getFriends(profile, ssbServer), queries.getFriends(profile, ssbServer),
]); ]);
res.render("index", { profile, posts, people, friends }); res.render("index", { profile, posts, friends });
}); });
router.post("/publish", async (req, res) => { router.post("/publish", async (req, res) => {
@ -103,6 +102,14 @@ router.get("/debug", async (_req, res) => {
res.render("debug", { profile, entries }); 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, () => const expressServer = app.listen(port, () =>
console.log(`Example app listening at http://localhost:${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) => { new Promise((resolve, reject) => {
pull( pull(
ssbServer.query.read({ ssbServer.query.read({
@ -111,7 +111,11 @@ const getPeople = (ssbServer) =>
], ],
}), }),
pull.filter((msg) => { 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) => { pull.collect((err, msgs) => {
const entries = msgs.map((x) => x.value); const entries = msgs.map((x) => x.value);
@ -170,7 +174,7 @@ const getAllEntries = (ssbServer) =>
module.exports = { module.exports = {
mapAuthorName, mapAuthorName,
getPosts, getPosts,
getPeople, searchPeople,
getFriends, getFriends,
getAllEntries, getAllEntries,
}; };

View File

@ -28,6 +28,10 @@
<div style="float: right"> <div style="float: right">
<%= profile.name %> (<%= profile.id.slice(0, 8) %>) <%= profile.name %> (<%= profile.id.slice(0, 8) %>)
</div> </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> <nav>
<a href="/">Home</a> <a href="/">Home</a>
<a href="/about">About me</a> <a href="/about">About me</a>

View File

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