# Problem 2: Category You are an engineer working in an e-commerce company. You are working on the API for the `category`. Given the raw records from the database, please implement a function to generate a data structure that represents the hierarchy of the `category`. ```javascript= function generateHierarchy(categories) { // your implementation } ``` ## Example: Given the raw records of `category`: ```javascript== const category = [ { id: 0, name: "root_category", display_priority: 1, parent_id: null, }, { id: 1, name: "food", display_priority: 1, parent_id: 0, }, { id: 2, name: "drink", display_priority: 2, parent_id: 0, }, { id: 3, name: "milk", display_priority: 1, parent_id: 2, }, { id: 4, name: "meat", display_priority: 2, parent_id: 1, }, { id: 5, name: "beef", display_priority: 1, parent_id: 4, }, { id: 6, name: "snack", display_priority: 1, parent_id: 1, }, ]; ``` The expected output is as follows. ```javascript= const output = generateHierarchy(categories); console.log(output); /* [ { id: 1, name: "food", display_priority: 1, children: [ { id: 6 name: "snack", display_priority: 1 children: [] }, { id: 4 name: "meat", display_priority: 2 children: [ { id: 5 name: "beef", display_priority: 1 children: [] }, ] }, ] }, { id: 1, name: "drink", display_priority: 2, children: [ { id: 3 name: "milk", display_priority: 1 children: [] } ] } ] * */ ``` ### Explanation: The hierarchy of `category` is: ```graphviz digraph graphname{ root_category->food root_category->drink drink->milk food->snack food->meat meat->beef } ``` - The children categories would be listed and sorted by the `display_priority` in the parent category's children. - The output ignores the `root_category` (as it is just the entry point of the category's hierarchy). ## Guidelines - You can use `Typescript` or `Javascript` to finish it. - No **external package** or **library** can be used. - Feel free to write some comments to explain what you do. ## Submission - Write all your code in a `p2.js` or `p2.ts` file