Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mmallikarjun2312/todo_app_with_date_fns
CRUD Operations on Todo_Application_Database using NodeJS, Express JS, SQLite we can perform various operations on the database like GET (Read) , POST (Create) , PUT (Update) and DELETE(Delete). API'S can retrieve various queries using path parameters and query parameters using Date-fns module.
https://github.com/mmallikarjun2312/todo_app_with_date_fns
apis crud-api databases date-fns expressjs javascript nodejs sqlite3
Last synced: 6 days ago
JSON representation
CRUD Operations on Todo_Application_Database using NodeJS, Express JS, SQLite we can perform various operations on the database like GET (Read) , POST (Create) , PUT (Update) and DELETE(Delete). API'S can retrieve various queries using path parameters and query parameters using Date-fns module.
- Host: GitHub
- URL: https://github.com/mmallikarjun2312/todo_app_with_date_fns
- Owner: MMALLIKARJUN2312
- Created: 2024-04-27T12:04:16.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-04-27T14:17:56.000Z (8 months ago)
- Last Synced: 2024-10-31T09:14:09.905Z (about 2 months ago)
- Topics: apis, crud-api, databases, date-fns, expressjs, javascript, nodejs, sqlite3
- Language: JavaScript
- Homepage:
- Size: 33.2 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Todo Application
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` are `HIGH`, `MEDIUM`, and `LOW`.
- Possible values for `status` are `TO DO`, `IN PROGRESS`, and `DONE`.
- Possible values for `category` are `WORK`, `HOME`, and `LEARNING`.
- Use the format `yyyy-MM-dd` for formating with date-fns `format` function.
- The user may request with due date value as `2021-1-21`, format the date to `2021-01-21` and perform Create, Read, Update operations on the database.Use `date-fns` format function to format the date. Refer to the documentation [link](https://date-fns.org/v2.19.0/docs/Getting-Started) for the usage of the `format` function.
### Invalid scenarios for all APIs
- **Invalid Status**
- **Response**
- **Status code**
```
400
```
- **Body**
```
Invalid Todo Status
```
- **Invalid Priority**
- **Response**
- **Status code**
```
400
```
- **Body**
```
Invalid Todo Priority
```
- **Invalid Category**- **Response**
- **Status code**
```
400
```
- **Body**
```
Invalid Todo Category
```- **Invalid Due Date**
- **Response**
- **Status code**
```
400
```
- **Body**
```
Invalid Due Date
```### API 1
#### Path: `/todos/`
#### Method: `GET`
- **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"
},
...
]
```### API 2
#### Path: `/todos/:todoId/`
#### Method: `GET`
#### Description:
Returns a specific todo based on the todo ID
#### Response
```
{
"id": 1,
"todo": "Learn Node JS",
"priority": "HIGH",
"status": "IN PROGRESS",
"category": "LEARNING",
"dueDate": "2021-03-16"
}
```### API 3
#### Path: `/agenda/`
#### Method: `GET`
#### Description:
Returns a list of all todos with a specific due date in the query parameter `/agenda/?date=2021-12-12`
#### Response
```
[
{
"id": 3,
"todo": "Clean the garden",
"priority": "LOW",
"status": "TO DO",
"category": "HOME",
"dueDate": "2021-12-12"
},
...
]
```### API 4
#### Path: `/todos/`
#### Method: `POST`
#### Description:
Create a todo in the todo table,
#### Request
```
{
"id": 6,
"todo": "Finalize event theme",
"priority": "LOW",
"status": "TO DO",
"category": "HOME",
"dueDate": "2021-02-22"
}
```#### Response
```
Todo Successfully Added
```### API 5
#### Path: `/todos/:todoId/`
#### Method: `PUT`
#### Description:
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
```### API 6
#### Path: `/todos/:todoId/`
#### Method: `DELETE`
#### Description:
Deletes a todo from the todo table based on the todo ID
#### Response
```
Todo Deleted
```
Use `npm install` to install the packages.
**Export the express instance using the default export syntax.**
**Use Common JS module syntax.**