Covid-19 India Portal
Given two files app.js
and a database file covid19IndiaPortal.db
consisting of three tables state
, district
and user
.
Write APIs to perform operations on the tables state
, district
only after authentication of the user.
The columns of the tables are given below,
State Table
Columns | Type |
---|---|
state_id | INTEGER |
state_name | TEXT |
population | INTEGER |
District Table
Columns | Type |
---|---|
district_id | INTEGER |
district_name | TEXT |
state_id | INTEGER |
cases | INTEGER |
cured | INTEGER |
active | INTEGER |
deaths | INTEGER |
You can use your previous code if required.
Sample Valid User Credentials
{
"username": "christopher_phillips",
"password": "christy@123"
}
API 1
/login/
Path: POST
Method: Request
{
"username": "christopher_phillips",
"password": "christy@123"
}
-
Scenario 1
-
Description:
If an unregistered user tries to login
-
Response
- Status code
400
- Body
Invalid user
- Status code
-
-
Scenario 2
-
Description:
If the user provides an incorrect password
-
Response
- Status code
400
- Body
Invalid password
- Status code
-
-
Scenario 3
-
Description:
Successful login of the user
-
Response
Return the JWT Token
{ "jwtToken": "ak2284ns8Di32......" }
-
Authentication with Token
-
Scenario 1
-
Description:
If the token is not provided by the user or an invalid token
-
Response
- Status code
401
- Body
Invalid JWT Token
- Status code
-
-
Scenario 2 After successful verification of token proceed to next middleware or handler
API 2
/states/
Path: GET
Method: Description:
Returns a list of all states in the state table
Response
[
{
"stateId": 1,
"stateName": "Andaman and Nicobar Islands",
"population": 380581
},
...
]
API 3
/states/:stateId/
Path: GET
Method: Description:
Returns a state based on the state ID
Response
{
"stateId": 8,
"stateName": "Delhi",
"population": 16787941
}
API 4
/districts/
Path: POST
Method: Description:
Create a district in the district table, district_id
is auto-incremented
Request
{
"districtName": "Bagalkot",
"stateId": 3,
"cases": 2323,
"cured": 2000,
"active": 315,
"deaths": 8
}
Response
District Successfully Added
API 5
/districts/:districtId/
Path: GET
Method: Description:
Returns a district based on the district ID
Response
{
"districtId": 322,
"districtName": "Palakkad",
"stateId": 17,
"cases": 61558,
"cured": 59276,
"active": 2095,
"deaths": 177
}
API 6
/districts/:districtId/
Path: DELETE
Method: Description:
Deletes a district from the district table based on the district ID
Response
District Removed
API 7
/districts/:districtId/
Path: PUT
Method: Description:
Updates the details of a specific district based on the district ID
Request
{
"districtName": "Nadia",
"stateId": 3,
"cases": 9628,
"cured": 6524,
"active": 3000,
"deaths": 104
}
Response
District Details Updated
API 8
/states/:stateId/stats/
Path: GET
Method: Description:
Returns the statistics of total cases, cured, active, deaths of a specific state based on state ID
Response
{
"totalCases": 724355,
"totalCured": 615324,
"totalActive": 99254,
"totalDeaths": 9777
}
Use npm install
to install the packages.
Export the express instance using the default export syntax.
Use Common JS module syntax.