Given an app.js
file and database file todoApplication.db
with a table todo
.
Write APIs to perform operations on the table todo
, with the following columns,
Todo Table
Column | Type |
---|---|
id | INTEGER |
todo | TEXT |
category | TEXT |
priority | TEXT |
status | TEXT |
due_date | DATE |
- Replace the spaces in URL with
%20
. - Possible values for
priority
areHIGH
,MEDIUM
, andLOW
. - Possible values for
status
areTO DO
,IN PROGRESS
, andDONE
. - Possible values for
category
areWORK
,HOME
, andLEARNING
. - Use the format
yyyy-MM-dd
for formating with date-fnsformat
function.- The user may request with due date value as
2021-1-21
, format the date to2021-01-21
and perform Create, Read, Update operations on the database.
- The user may request with due date value as
Use date-fns
format function to format the date. Refer to the documentation link for the usage of the format
function.
-
Invalid Status
- Response
- Status code
400
- Body
Invalid Todo Status
- Status code
- Response
-
Invalid Priority
- Response
- Status code
400
- Body
Invalid Todo Priority
- Status code
- Response
-
Invalid Category
- Response
- Status code
400
- Body
Invalid Todo Category
- Status code
- Response
-
Invalid Due Date
- Response
- Status code
400
- Body
Invalid Due Date
- Status code
- Response
-
Scenario 1
-
Sample API
/todos/?status=TO%20DO
-
Description:
Returns a list of all todos whose status is 'TO DO'
-
Response
[ { "id": 2, "todo": "Buy a Car", "priority": "MEDIUM", "status": "TO DO", "category": "HOME", "dueDate": "2021-09-22" }, ... ]
-
-
Scenario 2
-
Sample API
/todos/?priority=HIGH
-
Description:
Returns a list of all todos whose priority is 'HIGH'
-
Response
[ { "id": 1, "todo": "Learn Node JS", "priority": "HIGH", "status": "IN PROGRESS", "category": "LEARNING", "dueDate": "2021-03-16" }, ... ]
-
-
Scenario 3
-
Sample API
/todos/?priority=HIGH&status=IN%20PROGRESS
-
Description:
Returns a list of all todos whose priority is 'HIGH' and status is 'IN PROGRESS'
-
Response
[ { "id": 1, "todo": "Learn Node JS", "priority": "HIGH", "status": "IN PROGRESS", "category": "LEARNING", "dueDate": "2021-03-16" }, ... ]
-
-
Scenario 4
-
Sample API
/todos/?search_q=Buy
-
Description:
Returns a list of all todos whose todo contains 'Buy' text
-
Response
[ { "id": 2, "todo": "Buy a Car", "priority": "MEDIUM", "status": "TO DO", "category": "HOME", "dueDate": "2021-09-22" }, ... ]
-
-
Scenario 5
-
Sample API
/todos/?category=WORK&status=DONE
-
Description:
Returns a list of all todos whose category is 'WORK' and status is 'DONE'
-
Response
[ { "id": 4, "todo": "Fix the bug", "priority": "MEDIUM", "status": "DONE", "category": "WORK", "dueDate": "2021-01-25" }, ... ]
-
-
Scenario 6
-
Sample API
/todos/?category=HOME
-
Description:
Returns a list of all todos whose category is 'HOME'
-
Response
[ { "id": 2, "todo": "Buy a Car", "priority": "MEDIUM", "status": "TO DO", "category": "HOME", "dueDate": "2021-09-22" }, ... ]
-
-
Scenario 7
-
Sample API
/todos/?category=LEARNING&priority=HIGH
-
Description:
Returns a list of all todos whose category is 'LEARNING' and priority is 'HIGH'
-
Response
[ { "id": 1, "todo": "Learn Node JS", "priority": "HIGH", "status": "IN PROGRESS", "category": "LEARNING", "dueDate": "2021-03-16" }, ... ]
-
Returns a specific todo based on the todo ID
{
"id": 1,
"todo": "Learn Node JS",
"priority": "HIGH",
"status": "IN PROGRESS",
"category": "LEARNING",
"dueDate": "2021-03-16"
}
Returns a list of all todos with a specific due date in the query parameter /agenda/?date=2021-12-12
[
{
"id": 3,
"todo": "Clean the garden",
"priority": "LOW",
"status": "TO DO",
"category": "HOME",
"dueDate": "2021-12-12"
},
...
]
Create a todo in the todo table,
{
"id": 6,
"todo": "Finalize event theme",
"priority": "LOW",
"status": "TO DO",
"category": "HOME",
"dueDate": "2021-02-22"
}
Todo Successfully Added
Updates the details of a specific todo based on the todo ID
-
Scenario 1
-
Request
{ "status": "DONE" }
-
Response
Status Updated
-
-
Scenario 2
-
Request
{ "priority": "HIGH" }
-
Response
Priority Updated
-
-
Scenario 3
-
Request
{ "todo": "Clean the garden" }
-
Response
Todo Updated
-
-
Scenario 4
-
Request
{ "category": "LEARNING" }
-
Response
Category Updated
-
-
Scenario 5
-
Request
{ "dueDate": "2021-01-12" }
-
Response
Due Date Updated
-
Deletes a todo from the todo table based on the todo ID
Todo Deleted
Use npm install
to install the packages.
Export the express instance using the default export syntax.
Use Common JS module syntax.