Challenge Overview
Challenge Objectives
-
Fix a bunch of issues in our V5 Challenge API
Tech Stack
-
Node.js
-
DynamoDB
-
ElasticSearch
-
Docker
Code Access
Repos:
-
https://github.com/topcoder-platform/legacy-challenge-migration-script/
-
https://github.com/topcoder-platform/legacy-challenge-processor
Branch: develop
You may require to change the code in multiple repos during this challenge.
Detailed requirements
As part of this challenge, you need to fix the following issues:
Issue 1: https://github.com/topcoder-platform/challenge-api/issues/322
For this issue, you need to make sure the dates are being populated correctly and filters are set correctly in the ES query.
Please check the following repos and fix the ones that need to be fixed:
-
https://github.com/topcoder-platform/legacy-challenge-migration-script/
-
https://github.com/topcoder-platform/legacy-challenge-processor
Issue 2: https://github.com/topcoder-platform/challenge-api/issues/326
For this issue, you need to create a new object in the challenge model named `overview`.
This is going to be an optional object and for now, it will only have one auto-populated property named `totalPrizes` which is going to be automatically set to the sum of the placement prizes from the `prizesSets` array.
-
Update both the API and the ES processor to reflect the changes.
-
Make sure that this property is read-only and automatically populated.
-
Create a script in https://github.com/topcoder-platform/legacy-challenge-migration-script/tree/develop/src/scripts/migrations to populate that field on existing data.
Issue 3: https://github.com/topcoder-platform/challenge-api/issues/334
When using a JWT, all group checks should be done as they are currently implemented.
For un-authenticated calls, you should verify the groups in the query parameters are public based on their `privateGroup` flag.
You should ignore any private groups.
Issue 4: https://github.com/topcoder-platform/challenge-api/issues/331
For this issue, you need to create a DELETE /challenges/:challengeId endpoint to allow deleting a challenge.
-
The same access rules for when updating a challenge should apply here as well.
-
If the challenge is not in a `New` state (based on its `status` property), you should throw a 400 Bad Request error with a descriptive error message.
-
After deleting the challenge from both DynamoDB and ES, you need to post an event on the BUS API on the challenge.notification.delete topic. The payload should simply include the challenge ID
Issue 5: https://github.com/topcoder-platform/community-app/issues/4850
For this issue, you need to investigate the code in the provided repos and find and fix the issue where the data is not set correctly creating the issue described on the Community-App repo.
Do not comment on the issues on Github. You need to use the challenge forum for any communication during this challenge.
You also need to update the POSTMAN collection and the Swagger definition to reflect the changes made during this challenge.
Should you have any doubts, please post your questions in the challenge forum.