Skip to content

Commit 76aa2f7

Browse files
authored
Merge pull request #21 from topcoder-platform/develop
Member traits data has null check
2 parents b4044e5 + 3474f96 commit 76aa2f7

File tree

2 files changed

+98
-4
lines changed

2 files changed

+98
-4
lines changed

docs/swagger.yaml

+86
Original file line numberDiff line numberDiff line change
@@ -570,6 +570,82 @@ paths:
570570
description: Internal server error
571571
schema:
572572
$ref: '#/definitions/ErrorModel'
573+
"/members/autocomplete":
574+
get:
575+
tags:
576+
- Search
577+
description:
578+
Search members by term, the term is mactehd with handle. Based on which userId, handle, firstName, lastName of members profile are provided.
579+
580+
This services is best used for autocomplete features, where response payload is light and fast in searching through members.
581+
582+
The service does a like macth and sorts based on string coming before, or after, or is the same as the given string in sort order.
583+
parameters:
584+
- name: term
585+
in: query
586+
required: false
587+
type: string
588+
description: filter by term. term is mactehd with member handle.
589+
- name: fields
590+
in: query
591+
required: false
592+
type: string
593+
description: >
594+
fields=fieldName1,fieldName2,...,fieldN
595+
596+
597+
parameter for choosing which fields of members profile that will be included in response.
598+
599+
+ userId - Select the field userId
600+
601+
+ handle - Select the field handle
602+
603+
+ firstName - Select the field firstName
604+
605+
+ lastName - Select the field lastName
606+
- $ref: '#/parameters/page'
607+
- $ref: '#/parameters/perPage'
608+
responses:
609+
'200':
610+
description: OK
611+
schema:
612+
type: array
613+
items:
614+
$ref: '#/definitions/MemberSearchAutocompleteDataItem'
615+
headers:
616+
X-Next-Page:
617+
type: integer
618+
description: The index of the next page
619+
X-Page:
620+
type: integer
621+
description: The index of the current page (starting at 1)
622+
X-Per-Page:
623+
type: integer
624+
description: The number of items to list per page
625+
X-Prev-Page:
626+
type: integer
627+
description: The index of the previous page
628+
X-Total:
629+
type: integer
630+
description: The total number of items
631+
X-Total-Pages:
632+
type: integer
633+
description: The total number of pages
634+
Link:
635+
type: string
636+
description: Pagination link header.
637+
'400':
638+
description: Bad request data
639+
schema:
640+
$ref: '#/definitions/ErrorModel'
641+
'403':
642+
description: No permission to access the API
643+
schema:
644+
$ref: '#/definitions/ErrorModel'
645+
'500':
646+
description: Internal server error
647+
schema:
648+
$ref: '#/definitions/ErrorModel'
573649
'/members/{handle}/traits':
574650
get:
575651
tags:
@@ -1283,6 +1359,16 @@ definitions:
12831359
$ref: '#/definitions/MemberAggregatedSkills'
12841360
stats:
12851361
$ref: '#/definitions/MemberStats'
1362+
MemberSearchAutocompleteDataItem:
1363+
properties:
1364+
handle:
1365+
type: string
1366+
userId:
1367+
type: number
1368+
firstName:
1369+
type: string
1370+
lastName:
1371+
type: string
12861372
MemberProfileTrait:
12871373
properties:
12881374
traitId:

src/services/MemberTraitService.js

+12-4
Original file line numberDiff line numberDiff line change
@@ -58,16 +58,24 @@ async function getTraits (currentUser, handle, query) {
5858
// convert date time for traits data
5959
_.filter(result, (item) => _.forEach(item.traits.data, function(value) {
6060
if (value.hasOwnProperty('birthDate')) {
61-
value.birthDate = moment(value.birthDate).toDate().toISOString()
61+
if (value.birthDate) {
62+
value.birthDate = moment(value.birthDate).toDate().toISOString()
63+
}
6264
}
6365
if (value.hasOwnProperty('memberSince')) {
64-
value.memberSince = moment(value.memberSince).toDate().toISOString()
66+
if (value.memberSince) {
67+
value.memberSince = moment(value.memberSince).toDate().toISOString()
68+
}
6569
}
6670
if (value.hasOwnProperty('timePeriodFrom')) {
67-
value.timePeriodFrom = moment(value.timePeriodFrom).toDate().toISOString()
71+
if (value.timePeriodFrom) {
72+
value.timePeriodFrom = moment(value.timePeriodFrom).toDate().toISOString()
73+
}
6874
}
6975
if (value.hasOwnProperty('timePeriodTo')) {
70-
value.timePeriodTo = moment(value.timePeriodTo).toDate().toISOString()
76+
if (value.timePeriodTo) {
77+
value.timePeriodTo = moment(value.timePeriodTo).toDate().toISOString()
78+
}
7179
}
7280
}))
7381
// return only selected fields

0 commit comments

Comments
 (0)