Challenge Overview
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 | |
+-----------+-------------------------+---------------+
-- 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