Topcoder Connect - Phases and Products Models and REST API

Register
Submit a solution
The challenge is finished.

Challenge Overview

In this new challenge we are adding two new endpoints to topcoder Connect.
 

Requirements


1. Add new models in tc-project-service for project_phase, phase_product, product_template

2. Add new routes in tc-project-service for project_phase
-- GET /v4/projects/{projectId}/phases to list all phases of the project
-- GET /v4/projects/{projectId}/phases/{phaseId} to read the particular phase of the project
-- POST /v4/projects/{projectId}/phases to create new phase in the project
-- PUT /v4/projects/{projectId}/phases/{phaseId} to update a phase of the project
-- DELETE /v4/projects/{projectId}/phases/{phaseId} to delete a phase of the project

Schema:

+-----------+-------------------------+---------------+
| column    | type                    | default value |
+-----------+-------------------------+---------------+
| id        | long                    |               |
+-----------+-------------------------+---------------+
| name      | varchar(255)            |               |
+-----------+-------------------------+---------------+
| status    | varchar(45)             |               |
+-----------+-------------------------+---------------+
| projectId | long                    |               |
+-----------+-------------------------+---------------+
| startDate | timestamp with timezone |               |
+-----------+-------------------------+---------------+
| endDate   | timestamp with timezone |               |
+-----------+-------------------------+---------------+
| budget    | double                  | 0.0           |
+-----------+-------------------------+---------------+
| progress  | double                  | 0.0           |
+-----------+-------------------------+---------------+
| details   | json                    | empty         |
+-----------+-------------------------+---------------+
| deletedAt | timestamp with timezone |               |
+-----------+-------------------------+---------------+
| createdAt | timestamp with timezone |               |
+-----------+-------------------------+---------------+
| updatedAt | timestamp with timezone |               |
+-----------+-------------------------+---------------+
| deletedBy | long                    |               |
+-----------+-------------------------+---------------+
| createdBy | long                    |               |
+-----------+-------------------------+---------------+
| updatedBy | long                    |               |
+-----------+-------------------------+---------------+

3. Add new routes in tc-project-service for phase_product
-- GET /v4/projects/{projectId}/phases/{phaseId}/products to list all produts of the phase
-- GET /v4/projects/{projectId}/phases/{phaseId}/products/{productId} to read the particular product of the phase
-- POST /v4/projects/{projectId}/phases/{phaseId}/products to add new product in the phase. DO NOT allow the number of products per phase to be greater than a environment configured value which would be 1 for now.
-- PUT /v4/projects/{projectId}/phases/{phaseId}/products/{productId} to update a product of the phase
-- DELETE /v4/projects/{projectId}/phases/{phaseId}/products/{productId} to delete a product of the phase

Schema:

+--------------------+-------------------------+---------------+
| column             | type                    | default value |
+--------------------+-------------------------+---------------+
| id                 | long                    |               |
+--------------------+-------------------------+---------------+
| name               | varchar(255)            |               |
+--------------------+-------------------------+---------------+
| phaseId            | long                    |               |
+--------------------+-------------------------+---------------+
| projectId          | long                    |               |
+--------------------+-------------------------+---------------+
| directProjectId    | long                    |               |
+--------------------+-------------------------+---------------+
| billingAccountId   | long                    |               |
+--------------------+-------------------------+---------------+
| templateId         | long                    |               |
+--------------------+-------------------------+---------------+
| type               | varchar(255)            |               |
+--------------------+-------------------------+---------------+
| estimatedPrice     | double                  | 0.0           |
+--------------------+-------------------------+---------------+
| actualPrice        | double                  | 0.0           |
+--------------------+-------------------------+---------------+
| details            | json                    | empty         |
+--------------------+-------------------------+---------------+
| deletedAt          | timestamp with timezone |               |
+--------------------+-------------------------+---------------+
| createdAt          | timestamp with timezone |               |
+--------------------+-------------------------+---------------+
| updatedAt          | timestamp with timezone |               |
+--------------------+-------------------------+---------------+
| deletedBy          | long                    |               |
+--------------------+-------------------------+---------------+
| createdBy          | long                    |               |
+--------------------+-------------------------+---------------+
| updatedBy          | long                    |               |
+--------------------+-------------------------+---------------+


4. Unit tests for all new endpoints

5. Code is provided in forum

Final Submission Guidelines

  • Zip file with the code developed
  • Updated deployment guide

ELIGIBLE EVENTS:

2018 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30065204