Skip to content

Commit e68b759

Browse files
committed
refact convet query to filter helper
1 parent 262a3e0 commit e68b759

File tree

1 file changed

+19
-28
lines changed

1 file changed

+19
-28
lines changed

src/helpers/convertQueryToFilter.js

Lines changed: 19 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,36 @@
1-
/* thank you chatgpt */
21
const { userTypes } = require('@src/constants/userTypes')
32

3+
const attributeFilters = {
4+
uid: (value) => `uid=${value}`,
5+
cn: (value) => `cn=${value}`,
6+
username: (value) => `uid=${value}`,
7+
ci: (value) => `ci=${value}`,
8+
email: (value) => `maildrop=${value}`,
9+
}
10+
411
const userTypeFilters = {
512
student: userTypes[0],
6-
employee: userTypes[1],
7-
docent_employee: userTypes[2],
13+
docent_employee: userTypes[1],
14+
employee: userTypes[2],
815
}
916

1017
const createLdapFilterFromQuery = (query) => {
1118
const filters = []
1219

13-
if (query && Object.keys(query).length === 2) {
14-
return ''
15-
}
16-
17-
if (query.uid) {
18-
filters.push(`(uid=${query.uid})`)
19-
}
20-
21-
if (query.cn) {
22-
filters.push(`(cn=${query.cn})`)
20+
for (const key in query) {
21+
if (attributeFilters[key] && query[key]) {
22+
filters.push(`(${attributeFilters[key](query[key])})`)
23+
} else if (key === 'userType' && userTypeFilters[query[key]]) {
24+
filters.push(`(userType=${userTypeFilters[query[key]]})`)
25+
}
2326
}
2427

25-
if (query.username) {
26-
filters.push(`(uid=${query.username})`)
27-
}
28-
29-
if (query.ci) {
30-
filters.push(`(ci=${query.ci})`)
31-
}
32-
33-
if (query.email) {
34-
filters.push(`(maildrop=${query.email})`)
35-
}
36-
37-
if (query.userType && userTypeFilters[query.userType]) {
38-
filters.push(`(userType=${userTypeFilters[query.userType]})`)
28+
if (filters.length === 0) {
29+
return ''
3930
}
4031

4132
// Combine multiple filters using logical AND
42-
const ldapFilter = `${filters.join('')}`
33+
const ldapFilter = filters.join('')
4334

4435
return ldapFilter
4536
}

0 commit comments

Comments
 (0)