Challenge Overview
Requirements
1. Add new models in tc-project-service for project_template and product_template2. Add new routes in tc-project-service for project_template
-- GET /v4/projectTemplates to list all project templates of the project
-- GET /v4/projectTemplates/{templateId} to read the particular project template
-- POST /v4/projectTemplates to create new project template (Should validate the json type fields to be a valid JSON)
-- PATCH /v4/projectTemplates/{templateId} to update the given project template (Should validate the json type fields to be a valid JSON and only accept delta instead of complete object)
-- DELETE /v4/projectTemplates/{templateId} to delete the given project template
Schema:
+-----------+-------------------------+---------------+
| column | type | default value |
+-----------+-------------------------+---------------+
| id | long | |
+-----------+-------------------------+---------------+
| name | varchar(255) | |
+-----------+-------------------------+---------------+
| key | varchar(45) | |
+-----------+-------------------------+---------------+
| category | varchar(45) | |
+-----------+-------------------------+---------------+
| phases | json | |
+-----------+-------------------------+---------------+
| scope | json | |
+-----------+-------------------------+---------------+
-- GET /v4/productTemplates to list all product templates of the product
-- GET /v4/productTemplates/{templateId} to read the particular product template
-- POST /v4/productTemplates to create new product template (Should validate the json type fields to be a valid JSON)
-- PATCH /v4/productTemplates/{templateId} to update the given product template (Should validate the json type fields to be a valid JSON and only accept delta instead of complete object)
-- DELETE /v4/productTemplates/{templateId} to delete the given product template
Schema:
+------------+-------------------------+---------------+
| column | type | default value |
+------------+-------------------------+---------------+
| id | long | |
+------------+-------------------------+---------------+
| name | varchar(255) | |
+------------+-------------------------+---------------+
| productKey | varchar(45) | |
+------------+-------------------------+---------------+
| icon | varchar(255) | |
+------------+-------------------------+---------------+
| brief | varchar(45) | |
+------------+-------------------------+---------------+
| details | varchar(512) | |
+------------+-------------------------+---------------+
| aliases | json | |
+------------+-------------------------+---------------+
| template | json | |
+------------+-------------------------+---------------+
4. Unit tests for all new endpoints
5. Update swagger documentation
6. For list all endpoints, search in database is required. Follow existing code for example
7. Elastic Search is out of scope
8. Code is provided in forum
JSON fields update
1. For POST (create)
- json field should be validated as valid JSON and saved to database.
2. For PATCH (update) only the portion of the JSON object can be sent to endpoint
- It should be validated as valid JSON
- It would always override the existing field or add new one if the field doesn't exist in JSON object in database
- If the field being updated in the PATCH request is an array, it must override the entire array (no array merge)
Final Submission Guidelines
- Zip file containing modified code
- Updated deployment guide