in main/src/search/search.ts [116:184]
async function submitSearch(search: any) {
const searchId = su.generate()
var metric = DEFAULT_METRIC;
if (search[METRIC]) {
if (search[METRIC]==EUCLIDEAN_METRIC) {
metric = EUCLIDEAN_METRIC;
} else if (search[METRIC]==COSINE_METRIC) {
metric = COSINE_METRIC;
}
}
var maxHits = DEFAULT_MAX_HITS
if (search[MAX_HITS]) {
maxHits = search[MAX_HITS]
}
const submitTimestamp = getTimestamp
var requireMoa = "false";
if (search[REQUIRE_MOA]) {
if (search[REQUIRE_MOA].toLowerCase()=="true") {
requireMoa = "true";
}
}
const searchEntry = {
[PARTITION_KEY_SRTID]: searchId,
[SORT_KEY_IMGID]: ORIGIN,
[TRAIN_ID]: search.trainId,
[QUERY_IMAGE_ID]: search[QUERY_IMAGE_ID],
[METRIC]: metric,
[MAX_HITS]: maxHits,
[REQUIRE_MOA]: requireMoa,
[SUBMIT_TIMESTAMP]: submitTimestamp,
...(INCLUSION_TAG_LIST in search && {
[INCLUSION_TAG_LIST]: search[INCLUSION_TAG_LIST],
}),
...(EXCLUSION_TAG_LIST in search && {
[EXCLUSION_TAG_LIST]: search[EXCLUSION_TAG_LIST],
}),
}
const messageBody = generateSearchMessageBody(searchEntry);
const dynamoParams = {
TableName: TABLE_NAME,
Item: searchEntry
};
const sqsParams = {
MessageBody: messageBody,
MessageGroupId: "BioimsSearch",
MessageDeduplicationId: searchId,
QueueUrl: SEARCH_QUEUE_URL
};
const p: any[] = [];
p.push(db.put(dynamoParams).promise());
p.push(sqs.sendMessage(sqsParams).promise());
await Promise.all(p)
await updateSearchStatus(searchId, STATUS_SUBMITTED);
const response = {
searchId: searchId
}
return response
}