The Holiday Giftinator
Overall Purpose:
- Offer easy gift suggestions to people for their friends and family
- Give organized gift suggestions for diffrent categories
My Feture Purpose:
- Add values to users searched items
- Create the connection between frontend –> backend to apply to diffrent codes
- apply tags to recomended page + user profile
- users can share prefrences in their profile to friends(implementation idea)
- users can search for simular items in reccomended page (implementation idea)
Frontend to Backend Demo
-
input –> user types in search bar for an item or assosiated tag and click on item
-
Output –> Associated tags and name of items is added to the database
Postman Code Demo
- input name of item (into search bar/body of postman)
- output associated tags + name of item saved
Database + Dictionary Usage
- dictionary in api to save items with associated name, tags, and link
- SQL lite database
- save username, name of item, and tags
- query for items in the dictionary (located in search.py api file)
def search_items():
"""
Search for items based on a query string.
"""
query = request.args.get("q", "").lower() # q is querying for itmes
current_user = g.current_user # Get authenticated user
user_id = current_user.uid
if not query:
return jsonify([]) # Return an empty list if no query is provided
# Match items based on whether the query is in the name (case-insensitive, partial match)
results = [
{"name": item["name"], "link": item["link"], "tags": item["tags"]} #find item name, link, and tag
for item in items if query in item["name"].lower() #find item name to add into database
]
save data into json file (searchHistory.json)
## function to append data to the json file
def append_to_json(data):
try:
if os.path.exists(JSON_FILE_PATH):
with open(JSON_FILE_PATH, "r") as json_file:
existing_data = json.load(json_file)
else:
existing_data = []
existing_data.append(data) #append data to the json file
with open(JSON_FILE_PATH, "w") as json_file:
json.dump(existing_data, json_file, indent=4) #dump data to the json file
except Exception as e:
print(f"Error saving data to JSON file: {e}") #error catching
Crud Operatios
Create –> Add tags of items into database (query to find item details)
Read –> Read data from dictionary/in database (as well as in query to find item details above)
Update –> Update tags when user click on an item again (+1 with each interaction)
Delete –> Clear data from database
Algorithmic Code (Post, Get, Put Functions)
Post –> Add item data into the table (each time u add it adds tags)
Get –> Get the data of an item(name link tags)
Put –> update name or tags of an item in database
Method/Procedure
Sequencing
- check required feild (make sure there is userId and query for item n searchbar)
- type in search bar (query for item)
- click on item –> collect name tags and link assosiated to item
- display data into database depending on user input into searchbar
selection
- determine what action to take depending on input
- if any fields are missing display error message
- if all fields required are there then show items in search and display data in database
Iteration
- use GET to retrive data from query
#searching for items based on query string
def search_items():
"""
Search for items based on a query string.
"""
query = request.args.get("q", "").lower()
current_user = g.current_user # Get authenticated user
user_id = current_user.uid
if not query:
return jsonify([])
# Match items based on whether the query is in the name (case-insensitive, partial match)
results = [
{"name": item["name"], "link": item["link"], "tags": item["tags"]}
for item in items if query in item["name"].lower()
]
return jsonify(results), 200