Use Django for API Developement also create customized filters in django
git clone git@github.com:Sujit26/Frenzy-Backend.git
cd Frenzy-Backend
make djrun
OPERATION REQUINMENTS
API CALL => get http://127.0.0.1:8000/api/restaurants?time=1615841024
time: integar value(time in epoch format)
output :
[
{
"cash_balance": 1000.0,
"name": "Tummy",
"menu": [
{
"name": "Pizza",
"price": 100.0
}
],
"opening_time": [
{
"weekday": 2,
"from_hour": "01:26:14",
"to_hour": "19:26:29"
},
{
"weekday": 1,
"from_hour": "10:26:49",
"to_hour": "19:26:50"
}
]
}
]
API CALL => get http://127.0.0.1:8000/api/restaurants?time=1615841024
Response:
{
"cash_balance": 1021.0,
"name": "Domino'z",
"menu": [
{
"name": "Pizza 1",
"price": 120.0
},
{
"name": "HamBurger",
"price": 2000.0
}
],
"opening_time": [
{
"weekday": 0,
"from_hour": "00:07:44",
"to_hour": "14:07:45"
}
]
}
API CALL => get http://127.0.0.1:8000/api/restaurants?min_price=12&mode=gte&nod=1
nod: number of dishes
min_price: minimum price
max_price: maximum price
mode:
gte [for greater than & equal to]
lte [for less then & equal to]
Assumptions
- by default we are taking min_price = 0 & max_price = 999999
- nod=1 is nessary otherwise it will return all restaurants
Output:
[
{
"cash_balance": 1000.0,
"name": "Tummy",
"menu": [
{
"name": "Pizza",
"price": 100.0
}
],
"opening_time": [
{
"weekday": 2,
"from_hour": "01:26:14",
"to_hour": "19:26:29"
},
{
"weekday": 1,
"from_hour": "10:26:49",
"to_hour": "19:26:50"
}
]
},
{
"cash_balance": 1000.0,
"name": "Yummy",
"menu": [
{
"name": "Burger",
"price": 11.0
}
],
"opening_time": []
}
]
API CALL => get http://127.0.0.1:8000/api/restaurants?name=yumm
name: name of restaurant
return list of restaurants after full text search on resutaurant names
Response:
[
{
"cash_balance": 1000.0,
"name": "Yummy",
"menu": [
{
"name": "Burger",
"price": 11.0
}
],
"opening_time": []
}
]
API CALL => get http://localhost:8000/api/top-x-user?min_date=1615841024&max_date=1615841024&value=10
min_date: starting date of search in epoch (by default it will take date & time for current day)
max_date: ending date of search in epoch (by default it will take date & time for current day)
value: number of dollars
mode: 'lte' or 'gte'
- lte: less then or equal to
- gte: greater then or equal to
Response:
[
{
"cash_balance": 1000.0,
"id": 2,
"name": "Sidhant Jain",
"purchase_history": [
{
"id": 1,
"transaction_amount": 12.0,
"transaction_date": "2021-03-16T20:00:04Z",
"user": 2,
"dish_name": 1,
"restaurant": 2
},
{
"id": 3,
"transaction_amount": 12.0,
"transaction_date": "2021-03-16T20:04:32Z",
"user": 2,
"dish_name": 2,
"restaurant": 2
}
]
}
]
6. The most popular restaurants by transaction volume, either by number of transactions or transaction dollar value
API CALL => http://127.0.0.1:8000/api/most-popular?max_amount=10&mode=gte&min_date=1615841024&max_date=1615841024
max_amount: number of dollars
min_date: starting date of search in epoch (by default it will take date & time for current day)
max_date: ending date of search in epoch (by default it will take date & time for current day)
mode:
'gte' [for greater than & equal to]
'lte' [for less then & equal to]
sample output:
{
"Number of user": 10
}
API CALL => http://127.0.0.1:8000/api/user?min_date=1615841024&max_date=1615841024&value=2&mode=lte
min_date: starting date of search in epoch (by default it will take date & time for current day)
max_date: ending date of search in epoch (by default it will take date & time for current day)
value: number of dollars
mode: 'lte' or 'gte'
- lte: less then or equal to
- gte: greater then or equal to
8. Process a user purchasing a dish from a restaurant, handling all relevant data changes in an atomic transaction
API CALL => get http://127.0.0.1:8000/api/transaction
Response: List all the transactions
[
{
"id": 1,
"transaction_amount": 12.0,
"transaction_date": "2021-03-16T20:00:04Z",
"user": 2,
"dish_name": 1,
"restaurant": 2
},
{
"id": 2,
"transaction_amount": 1.0,
"transaction_date": "2021-03-16T20:01:32Z",
"user": 1,
"dish_name": 1,
"restaurant": 1
},
{
"id": 3,
"transaction_amount": 12.0,
"transaction_date": "2021-03-16T20:04:32Z",
"user": 2,
"dish_name": 2,
"restaurant": 2
},
{
"id": 4,
"transaction_amount": 100.0,
"transaction_date": "2021-03-17T13:47:59.022761Z",
"user": 1,
"dish_name": 1,
"restaurant": 1
}
]
API CALL => post http://127.0.0.1:8000/api/transaction
data: {
"user": 1,
"dish_name": 1
}
Response:
{
"id": 4,
"transaction_amount": 100.0,
"transaction_date": "2021-03-17T13:47:59.022761Z",
"user": 1,
"dish_name": 1,
"restaurant": 1
}
OPERATION REQUINMENTS
- id
- name
- cash_balance
- id
- name
- price
- restaurant
- weekday
- from_hour
- to_hour
- restaurant
- name
- id
- cash_balance
- user_id (f_key to User)
- dish_name
- restaurant_name
- transaction_amount
- transaction_date
[ (0, "Monday"), (1, "Tuesday"), (2, "Wednesday"), (3, "Thursday"), (4, "Friday"), (5, "Saturday"), (6, "Sunday"), ]
Assumption
- If any restaurant opens more or less than X hours then we consider in Requinment number 2. It is not nesessary to open more or less then X hours daily.
- We create full text search for restaurant & dishes.