Basic search functionality on the frontpage, I want to add support for

more advanced searches like using boolean operators, but right now it's
pretty basic.
This commit is contained in:
2025-10-01 10:40:36 +01:00
parent 8ad8f01043
commit 521dbccc7e
4 changed files with 32 additions and 9 deletions

View File

@@ -8,7 +8,7 @@ const fs = require("fs")
export function searchdata(term, type) { // Searches users and posts for any matches
let search_results = {"posts": [], "users": []};
// Search users
if (type == 'post' || type == 'any') {
if (type.includes('post')) {
let list = getdata('posts');
list.forEach((element,index) => {
if (typeof element.deleted == 'undefined' || element.deleted == false) {
@@ -24,18 +24,18 @@ export function searchdata(term, type) { // Searches users and posts for any mat
};
});
}
if (type == 'user' || type == 'any') {
if (type.includes('user')) {
let list = getdata('users');
list.forEach((element,index) => {
if (typeof element.deleted == 'undefined' || element.deleted == false) {
if (element.username.includes(term)) {
search_results.posts.push(element)
search_results.users.push(element)
}
else if (element.prettyname.includes(term)) {
search_results.posts.push(element)
search_results.users.push(element)
}
else if (element.description.includes(term)) {
search_results.posts.push(element)
search_results.users.push(element)
};
};
});

View File

@@ -202,9 +202,12 @@ router.post("/submit_edit_post", (req,res) => {
router.get('/search', (req, res) => {
const search_term = req.query.q; // 'q' is the parameter name
let search_type = req.query.type; // eg 'any', 'post', 'user' etc...
if (typeof search_type == 'undefined') { // Default to 'any'
search_type = 'any';
let search_type = req.query.type; // eg 'post', 'user'
if (typeof search_type == 'string') { // Make the search_term an array
search_type = [ search_type ]
}
if (typeof search_type == 'undefined') { // Default to all of the types
search_type = ['user', 'post'];
}
console.log('searching for: ', search_term);
const search_results = data.searchdata(search_term, search_type); // data.searchdata returns an array of search results
@@ -213,6 +216,8 @@ router.get('/search', (req, res) => {
config,
locale,
search_results,
search_term,
search_type,
})
}); // /search