change: more precise member search
This commit is contained in:
parent
1e22968d05
commit
240943210e
1 changed files with 25 additions and 12 deletions
|
@ -28,19 +28,32 @@ export default abstract class MemberService {
|
||||||
let query = this.applyMemberBaseJoins();
|
let query = this.applyMemberBaseJoins();
|
||||||
|
|
||||||
if (search != "") {
|
if (search != "") {
|
||||||
search.split(" ").forEach((term, index) => {
|
let searchBits = search.split(" ");
|
||||||
const searchQuery = `%${term}%`;
|
console.log(searchBits);
|
||||||
const dynamic = "searchQuery" + Math.random().toString(36).substring(2);
|
|
||||||
if (index == 0) {
|
if (searchBits.length < 2) {
|
||||||
query = query.where(`member.firstname LIKE :${dynamic} OR member.lastname LIKE :${dynamic}`, {
|
query = query.where(`member.firstname LIKE :searchQuery OR member.lastname LIKE :searchQuery`, {
|
||||||
[dynamic]: searchQuery,
|
searchQuery: `%${searchBits[0]}%`,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
query = query.orWhere(`member.firstname LIKE :${dynamic} OR member.lastname LIKE :${dynamic}`, {
|
let pairs: string[][] = [];
|
||||||
[dynamic]: searchQuery,
|
for (let i = 0; i < searchBits.length; i++) {
|
||||||
});
|
for (let j = 0; j < searchBits.length; j++) {
|
||||||
|
if (searchBits[i] != searchBits[j]) pairs.push([searchBits[i], searchBits[j]]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
pairs.forEach((term, index) => {
|
||||||
|
const dynamic = "searchQuery" + Math.random().toString(36).substring(2);
|
||||||
|
query = query.orWhere(
|
||||||
|
`member.firstname LIKE :${dynamic + "_firstname"} AND member.lastname LIKE :${dynamic + "_lastname"}`,
|
||||||
|
{
|
||||||
|
[dynamic + "_firstname"]: `%${term[0]}%`,
|
||||||
|
[dynamic + "_lastname"]: `%${term[1]}%`,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ids.length != 0) {
|
if (ids.length != 0) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue