Register
Submit a solution
The challenge is finished.

Challenge Overview

We'd like to create a way to populate another challenge-detail index for legacy marathon matches which contains the necessary information for challenge detail api.

General Requirements

1. Review ES - Challenges Index - New Data Model - Index Field Analysis.pdf file (attached in forum) to understand the required information for challenge-detail index.
green cells in I column (Required In challenge-detail index) are the needed information for challenge-detail index.

2.  Create a new ChallengeDetailData class similar as ChallengeData class, which will define/use other POJOs to represents the document model in ElasticSearch. Please properly following the naming as in PDF file

3. Create a new ChallengeDetailMMFeederDAO class similar as ChallengeFeederDAO class, which will do sql querying to get the necessary information to fill ChallengeDetailData

3.1 For legacy marathon matches, you should query against tables in informixoltp database
-  contest
- round (round_id should be used for challenge id concept)
- round_segment (contains phases related logic)
- round_component
- component
- problem
- round_registration
- long_comp_result

You can understand the relationship between tables by looking the sqls - https://github.com/topcoder-platform/challenges-logstash-conf/blob/populate_more_challenge_info/conf/mmatches-feeder-conf.j2


4. Create a new ChallengeDetailMMFeederManager class similar as ChallengeFeederManager class, which will use methods  in ChallengeDetailMMFeederDAO class and generate the final ChallengeDetailData object and push the data into ElasticSearch

5. Create a new LoadChangedMMChallengeDetailJob class similar as LoadChallengedChallengesJob, which will running periodically to see the changed challenges and trying to push the new data into ElasticSearch.


Local Setup

- Please follow https://github.com/appirio-tech/tc-common-tutorials/tree/master/docker/direct-app to run the dependent services, like informix, redis, direct app and elasticsearch.
- Clone the codebase from github and build it.
- Run it by using local/run.sh
- Verification
-- There is no UI way to create MM matches, but you can follow https://github.com/topcoder-platform/tc-database-scripts/blob/dev/informixoltp/05_informixoltp_test_data.sql#L684-L755 to use sqls to create test data.

Final Submission Guidelines

- Code Changes
- Verification Steps
- Winner Responsiblity: Create the Pull Request For Merging

ELIGIBLE EVENTS:

2018 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30065293