Challenge Overview
In this challenge, we need to update the logic behind the Basic Info (basic_info) member traits based on the following detailed requirements.
Detailed Requirements
-
Currently, we’re saving the member details in the MemberProfile table but recently we introduced a new method to store member information as “traits”. That information is stored in the MemberProfileTrait table. You will find a PDF document attached to the challenge forum that explains the properties that need to be stored in each corresponding table. You need to update the logic behind PUT/POST for the basic_info trait so it’ll accept all properties from both tables but then it’ll store each property in the correct table. Please refer to the current implementation of the PUT /members/{handle} endpoint to see how the input validation works for the fields stored in the MemberProfile table. You need to replicate the logic from there. Note that it should not be possible to update the user’s email address using the traits endpoint. This should be left in the PUT /members{handle} endpoint.
-
Update the GET /members/{handle}/traits endpoint so the basic_info trait returns all data from both tables.
-
The DELETE method should not remove any of the data from the MemberProfile table and should only affect the traits.
-
Update the swagger definition in the repo to reflect the changes.
-
Update the POSTMAN tests to reflect the changes.
About current application:
-
Existing Topcoder Services technologies using Java 8 with Maven 3, Docker and Docker Compose, DynamoDB, AWS, ElasticSearch
-
Existing Code: https://github.com/appirio-tech/ap-member-microservice
You will find a self-registration link attached on the forum in case you don’t have access to the repo.
If the self-registration link does not work for you, please request access by posting your Github username on the challenge forum.
Feel free to ask any questions on the challenge forum!
Final Submission Guidelines
Submit a git patch against the latest commit in the dev branch.
The winner must create a pull request against the dev branch in our repo.