Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[#11878] Update SearchAccountRequests endpoint #12950

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions solr/solr.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,5 @@ bin/solr create -c accountrequests -s 2 -rf 2
bin/solr config -c accountrequests -p 8983 -action set-user-property -property update.autoCreateFields -value false
curl -X POST -H 'Content-type: application/json' --data-binary '{"add-field": {"name": "email", "type": "string"}}' localhost:8983/solr/accountrequests/schema
curl -X POST -H 'Content-type: application/json' --data-binary '{"add-field": {"name": "institute", "type": "string"}}' localhost:8983/solr/accountrequests/schema
curl -X POST -H 'Content-type: application/json' --data-binary '{"add-field": {"name": "comments", "type": "string"}}' localhost:8983/solr/accountrequests/schema
curl -X POST -H 'Content-type: application/json' --data-binary '{"add-field": {"name": "status", "type": "string"}}' localhost:8983/solr/accountrequests/schema
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,16 @@ public void allTests() throws Exception {
results = accountRequestsDb.searchAccountRequestsInWholeSystem("\"TEAMMATES Test Institute 2\"");
verifySearchResults(results, unregisteredInstructor2);

______TS("success: search for account requests; account requests should be searchable by their comments");

results = accountRequestsDb.searchAccountRequestsInWholeSystem("Comments for account request from instructor2");
verifySearchResults(results, ins2General);

______TS("success: search for account requests; account requests should be searchable by their status");

results = accountRequestsDb.searchAccountRequestsInWholeSystem("registered");
verifySearchResults(results, ins2General);

______TS("success: search for account requests; unregistered account requests should be searchable");

results = accountRequestsDb.searchAccountRequestsInWholeSystem("\"[email protected]\"");
Expand Down
4 changes: 3 additions & 1 deletion src/it/resources/data/typicalDataBundle.json
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,9 @@
"name": "Instructor 2",
"email": "[email protected]",
"institute": "TEAMMATES Test Institute 1",
"registeredAt": "2015-02-14T00:00:00Z"
"registeredAt": "2015-02-14T00:00:00Z",
"comments": "Comments for account request from instructor2",
"status": "REGISTERED"
},
"instructor3": {
"name": "Instructor 3 of CourseNoRegister",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,10 +152,8 @@ public void deleteAccountRequest(AccountRequest accountRequest) {
*/
public void deleteDocumentByAccountRequestId(UUID accountRequestId) {
if (getSearchManager() != null) {
// Solr saves the id with the prefix "java.util.UUID:", so we need to add it here to
// identify and delete the document from the index
getSearchManager().deleteDocuments(
Collections.singletonList("java.util.UUID:" + accountRequestId.toString()));
Collections.singletonList(accountRequestId.toString()));
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package teammates.storage.sqlsearch;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

Expand All @@ -19,14 +20,29 @@ class AccountRequestSearchDocument extends SearchDocument<AccountRequest> {
Map<String, Object> getSearchableFields() {
Map<String, Object> fields = new HashMap<>();
AccountRequest accountRequest = entity;
String[] searchableTexts = {
accountRequest.getName(), accountRequest.getEmail(), accountRequest.getInstitute(),
};

fields.put("id", accountRequest.getId());
ArrayList<String> searchableTexts = new ArrayList<>();
searchableTexts.add(accountRequest.getName());
searchableTexts.add(accountRequest.getEmail());
searchableTexts.add(accountRequest.getInstitute());

if (accountRequest.getComments() != null) {
searchableTexts.add(accountRequest.getComments());
}
if (accountRequest.getStatus() != null) {
searchableTexts.add(accountRequest.getStatus().toString());
}

fields.put("id", accountRequest.getId().toString());
fields.put("_text_", String.join(" ", searchableTexts));
fields.put("email", accountRequest.getEmail());
fields.put("institute", accountRequest.getInstitute());
if (accountRequest.getComments() != null) {
fields.put("comments", accountRequest.getComments());
}
if (accountRequest.getStatus() != null) {
fields.put("status", accountRequest.getStatus().toString());
}

return fields;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import java.util.Comparator;
import java.util.List;
import java.util.UUID;

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.response.QueryResponse;
Expand Down Expand Up @@ -35,9 +36,8 @@ AccountRequestSearchDocument createDocument(AccountRequest accountRequest) {

@Override
AccountRequest getEntityFromDocument(SolrDocument document) {
String email = (String) document.getFirstValue("email");
String institute = (String) document.getFirstValue("institute");
return accountRequestsDb.getAccountRequest(email, institute);
UUID id = UUID.fromString((String) document.getFieldValue("id"));
return accountRequestsDb.getAccountRequest(id);
}

@Override
Expand Down
Loading