mirror of
https://github.com/CompassConnections/Compass.git
synced 2026-01-01 18:38:18 -05:00
Add AND multi keyword search
This commit is contained in:
@@ -14,7 +14,7 @@ export async function GET(request: Request) {
|
||||
const coreValues = url.searchParams.get("coreValues")?.split(",").filter(Boolean) || [];
|
||||
const causeAreas = url.searchParams.get("causeAreas")?.split(",").filter(Boolean) || [];
|
||||
const connections = url.searchParams.get("connections")?.split(",").filter(Boolean) || [];
|
||||
const searchQuery = url.searchParams.get("searchQuery") || "";
|
||||
const searchQueries = url.searchParams.get("searchQuery")?.split(",").map(q => q.trim()).filter(Boolean) || [];
|
||||
|
||||
const profilesPerPage = 100;
|
||||
const offset = (page - 1) * profilesPerPage;
|
||||
@@ -145,94 +145,99 @@ export async function GET(request: Request) {
|
||||
};
|
||||
}
|
||||
|
||||
if (searchQuery) {
|
||||
where.OR = [
|
||||
...(where.OR ?? []),
|
||||
{name: {contains: searchQuery, mode: 'insensitive'}},
|
||||
// {email: {contains: searchQuery, mode: 'insensitive'}},
|
||||
{
|
||||
profile: {
|
||||
description: {contains: searchQuery, mode: 'insensitive'},
|
||||
},
|
||||
},
|
||||
{
|
||||
profile: {
|
||||
occupation: {contains: searchQuery, mode: 'insensitive'},
|
||||
},
|
||||
},
|
||||
{
|
||||
profile: {
|
||||
location: {contains: searchQuery, mode: 'insensitive'},
|
||||
},
|
||||
},
|
||||
{
|
||||
profile: {
|
||||
contactInfo: {contains: searchQuery, mode: 'insensitive'},
|
||||
},
|
||||
},
|
||||
{
|
||||
profile: {
|
||||
intellectualInterests: {
|
||||
some: {
|
||||
interest: {
|
||||
name: {contains: searchQuery, mode: "insensitive"},
|
||||
if (searchQueries.length > 0) {
|
||||
where.AND = [
|
||||
...(where.AND ?? []),
|
||||
...searchQueries.map(query => ({
|
||||
OR: [
|
||||
{name: {contains: query, mode: 'insensitive'}},
|
||||
// {email: {contains: searchQuery, mode: 'insensitive'}},
|
||||
{
|
||||
profile: {
|
||||
description: {contains: query, mode: 'insensitive'},
|
||||
},
|
||||
},
|
||||
{
|
||||
profile: {
|
||||
occupation: {contains: query, mode: 'insensitive'},
|
||||
},
|
||||
},
|
||||
{
|
||||
profile: {
|
||||
location: {contains: query, mode: 'insensitive'},
|
||||
},
|
||||
},
|
||||
{
|
||||
profile: {
|
||||
contactInfo: {contains: query, mode: 'insensitive'},
|
||||
},
|
||||
},
|
||||
{
|
||||
profile: {
|
||||
intellectualInterests: {
|
||||
some: {
|
||||
interest: {
|
||||
name: {contains: query, mode: "insensitive"},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
profile: {
|
||||
coreValues: {
|
||||
some: {
|
||||
value: {
|
||||
name: {contains: searchQuery, mode: "insensitive"},
|
||||
{
|
||||
profile: {
|
||||
coreValues: {
|
||||
some: {
|
||||
value: {
|
||||
name: {contains: query, mode: "insensitive"},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
profile: {
|
||||
causeAreas: {
|
||||
some: {
|
||||
causeArea: {
|
||||
name: {contains: searchQuery, mode: "insensitive"},
|
||||
{
|
||||
profile: {
|
||||
causeAreas: {
|
||||
some: {
|
||||
causeArea: {
|
||||
name: {contains: query, mode: "insensitive"},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
profile: {
|
||||
desiredConnections: {
|
||||
some: {
|
||||
connection: {
|
||||
name: {contains: searchQuery, mode: "insensitive"},
|
||||
{
|
||||
profile: {
|
||||
desiredConnections: {
|
||||
some: {
|
||||
connection: {
|
||||
name: {contains: query, mode: "insensitive"},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
profile: {
|
||||
promptAnswers: {
|
||||
some: {
|
||||
answer: {contains: searchQuery, mode: "insensitive"},
|
||||
{
|
||||
profile: {
|
||||
promptAnswers: {
|
||||
some: {
|
||||
answer: {contains: query, mode: "insensitive"},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
profile: {
|
||||
promptAnswers: {
|
||||
some: {
|
||||
prompt: {contains: searchQuery, mode: "insensitive"},
|
||||
{
|
||||
profile: {
|
||||
promptAnswers: {
|
||||
some: {
|
||||
prompt: {contains: query, mode: "insensitive"},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
];
|
||||
]
|
||||
}))
|
||||
]
|
||||
|
||||
}
|
||||
|
||||
console.log(where.profile);
|
||||
|
||||
@@ -201,7 +201,7 @@ export default function ProfilePage() {
|
||||
<div className="relative">
|
||||
<input
|
||||
type="text"
|
||||
placeholder='Try "meditation", "hiking", or "chess"'
|
||||
placeholder='Try "meditation", "hiking", or multiple words like "writing, nature"'
|
||||
className="w-full pl-10 pr-10 py-2 border rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent"
|
||||
value={text}
|
||||
onChange={(e) => setText(e.target.value)}
|
||||
|
||||
Reference in New Issue
Block a user