Changeset View
Changeset View
Standalone View
Standalone View
keyserver/src/search/users.js
// @flow | // @flow | ||||
import type { UserSearchRequest } from 'lib/types/search-types.js'; | import type { UserSearchRequest } from 'lib/types/search-types.js'; | ||||
import type { GlobalAccountUserInfo } from 'lib/types/user-types.js'; | import type { GlobalAccountUserInfo } from 'lib/types/user-types.js'; | ||||
import { dbQuery, SQL } from '../database/database.js'; | import { dbQuery, SQL } from '../database/database.js'; | ||||
async function searchForUsers( | async function searchForUsers( | ||||
query: UserSearchRequest, | query: UserSearchRequest, | ||||
): Promise<GlobalAccountUserInfo[]> { | ): Promise<GlobalAccountUserInfo[]> { | ||||
const sqlQuery = SQL`SELECT id, username, avatar FROM users `; | const sqlQuery = SQL`SELECT id, username FROM users `; | ||||
const prefix = query.prefix; | const prefix = query.prefix; | ||||
if (prefix) { | if (prefix) { | ||||
sqlQuery.append(SQL`WHERE LOWER(username) LIKE LOWER(${prefix + '%'}) `); | sqlQuery.append(SQL`WHERE LOWER(username) LIKE LOWER(${prefix + '%'}) `); | ||||
} | } | ||||
sqlQuery.append(SQL`LIMIT 20`); | sqlQuery.append(SQL`LIMIT 20`); | ||||
const [result] = await dbQuery(sqlQuery); | const [result] = await dbQuery(sqlQuery); | ||||
const userInfos = []; | const userInfos = []; | ||||
for (const row of result) { | for (const row of result) { | ||||
userInfos.push({ | userInfos.push({ | ||||
id: row.id.toString(), | id: row.id.toString(), | ||||
username: row.username, | username: row.username, | ||||
avatar: row.avatar, | |||||
}); | }); | ||||
} | } | ||||
return userInfos; | return userInfos; | ||||
} | } | ||||
export { searchForUsers }; | export { searchForUsers }; |