/', methods=['GET'])
+def get_all_listings():
+ cursor = db.get_db().cursor()
+
+ the_query = '''
+ SET @SizeFilter = 'M';
+ SET @ConditionFilter = 'Good';
+ SET @TagFilter = 'Vintage';
+
+
+ SELECT DISTINCT i.ItemID, i.Title, i.Category, i.Description, i.Size, i.`Condition`, i.`Type`, u.Name AS OwnerName
+ FROM Items i
+ INNER JOIN Users u ON i.OwnerID = u.UserID
+ LEFT JOIN ItemTags it ON i.ItemID = it.ItemID
+ LEFT JOIN Tags t ON it.TagID = t.TagID
+ WHERE i.IsAvailable = 1
+ AND i.`Type` = 'Swap'
+ AND i.Size = @SizeFilter
+ AND i.`Condition` = @ConditionFilter
+ AND t.Title = @TagFilter;
+
+ '''
+
+ cursor.execute(the_query)
+ theData = cursor.fetchall()
+
+ the_response = make_response(jsonify(theData))
+ the_response.status_code = 200
+ the_response.mimetype = 'application/json'
+ return the_response
+#-----User Story 1------
diff --git a/app/Dockerfile b/app/Dockerfile
index d60510b150..8db98a4339 100644
--- a/app/Dockerfile
+++ b/app/Dockerfile
@@ -1,6 +1,6 @@
FROM python:3.11-slim
-WORKDIR /appcode
+WORKDIR /app
RUN apt-get update && apt-get install -y \
build-essential \
@@ -10,13 +10,11 @@ RUN apt-get update && apt-get install -y \
pkg-config \
&& rm -rf /var/lib/apt/lists/*
-# RUN mkdir /requirements
-# COPY ./src/requirements.txt /requirements/requirements.txt
-
COPY ./src/requirements.txt .
-
RUN pip3 install -r requirements.txt
+COPY ./src ./
+
EXPOSE 8501
CMD ["streamlit", "run", "Home.py", "--server.port=8501", "--server.address=0.0.0.0"]
diff --git a/app/src/Home.py b/app/src/Home.py
index abe97588aa..10dcce2538 100644
--- a/app/src/Home.py
+++ b/app/src/Home.py
@@ -1,79 +1,143 @@
-##################################################
-# This is the main/entry-point file for the
-# sample application for your project
-##################################################
-
-# Set up basic logging infrastructure
import logging
-logging.basicConfig(format='%(filename)s:%(lineno)s:%(levelname)s -- %(message)s', level=logging.INFO)
-logger = logging.getLogger(__name__)
-
-# import the main streamlit library as well
-# as SideBarLinks function from src/modules folder
import streamlit as st
from modules.nav import SideBarLinks
-# streamlit supports reguarl and wide layout (how the controls
-# are organized/displayed on the screen).
-st.set_page_config(layout = 'wide')
+# Logging
+logging.basicConfig(format='%(filename)s:%(lineno)s:%(levelname)s -- %(message)s', level=logging.INFO)
+logger = logging.getLogger(__name__)
-# If a user is at this page, we assume they are not
-# authenticated. So we change the 'authenticated' value
-# in the streamlit session_state to false.
+# Page config
+st.set_page_config(layout='wide')
st.session_state['authenticated'] = False
-# Use the SideBarLinks function from src/modules/nav.py to control
-# the links displayed on the left-side panel.
-# IMPORTANT: ensure src/.streamlit/config.toml sets
-# showSidebarNavigation = false in the [client] section
+# Sidebar
SideBarLinks(show_home=True)
# ***************************************************
-# The major content of this page
+# CSS Styling
+# ***************************************************
+st.markdown("""
+
+""", unsafe_allow_html=True)
+
# ***************************************************
+# Main content
+# ***************************************************
+
+# Logo centered at top
+st.markdown('', unsafe_allow_html=True)
+st.markdown('
', unsafe_allow_html=True)
-# set the title of the page and provide a simple prompt.
-logger.info("Loading the Home page of the app")
-st.title('CS 3200 Project Template')
-st.write('\n\n')
-# st.write('### Overview:')
-# st.write('\n')
-st.write('#### HI! As which user would you like to log in?')
+# Swap into Style text
+st.markdown('Swap into style and swap roles
', unsafe_allow_html=True)
-# For each of the user personas for which we are implementing
-# functionality, we put a button on the screen that the user
-# can click to MIMIC logging in as that mock user.
+# Admin emoji + button
+col1, col2 = st.columns([80, 1000], gap="small")
+with col1:
+ st.markdown('', unsafe_allow_html=True)
+with col2:
+ if st.button("Admin", key="Admin", use_container_width=True):
+ st.session_state['authenticated'] = True
+ st.session_state['role'] = 'Admin: Aisha'
+ st.session_state['first_name'] = 'Aisha'
+ logger.info("Logging in as Admin Persona")
+ st.switch_page('pages/05_Admin_Home.py')
-if st.button("Act as John, a Political Strategy Advisor",
- type = 'primary',
- use_container_width=True):
- # when user clicks the button, they are now considered authenticated
- st.session_state['authenticated'] = True
- # we set the role of the current user
- st.session_state['role'] = 'pol_strat_advisor'
- # we add the first name of the user (so it can be displayed on
- # subsequent pages).
- st.session_state['first_name'] = 'John'
- # finally, we ask streamlit to switch to another page, in this case, the
- # landing page for this particular user type
- logger.info("Logging in as Political Strategy Advisor Persona")
- st.switch_page('pages/00_Pol_Strat_Home.py')
+st.markdown('
', unsafe_allow_html=True)
-if st.button('Act as Mohammad, an USAID worker',
- type = 'primary',
- use_container_width=True):
- st.session_state['authenticated'] = True
- st.session_state['role'] = 'usaid_worker'
- st.session_state['first_name'] = 'Mohammad'
- st.switch_page('pages/10_USAID_Worker_Home.py')
+# Data Analyst emoji + button
+col1, col2 = st.columns([80, 1000], gap="small")
+with col1:
+ st.markdown('', unsafe_allow_html=True)
+with col2:
+ if st.button("Data Analyst", key="Data Analyst", use_container_width=True):
+ st.session_state['authenticated'] = True
+ st.session_state['role'] = 'Data Analyst: Blair'
+ st.session_state['first_name'] = 'Blair'
+ logger.info("Logging in as Data Analyst Persona")
+ st.switch_page('pages/00_DADash.py')
-if st.button('Act as System Administrator',
- type = 'primary',
- use_container_width=True):
- st.session_state['authenticated'] = True
- st.session_state['role'] = 'administrator'
- st.session_state['first_name'] = 'SysAdmin'
- st.switch_page('pages/20_Admin_Home.py')
+st.markdown('
', unsafe_allow_html=True)
+# Swapper emoji + button
+col1, col2 = st.columns([80, 1000], gap="small")
+with col1:
+ st.markdown('', unsafe_allow_html=True)
+with col2:
+ if st.button("Swapper", key="Swapper", use_container_width=True):
+ st.session_state['authenticated'] = True
+ st.session_state['role'] = 'Swapper: Andrea'
+ st.session_state['first_name'] = 'Andrea'
+ logger.info("Logging in as Swapper Persona")
+ st.switch_page('pages/00_SwapperDash.py')
+st.markdown('
', unsafe_allow_html=True)
+# Taker emoji + button
+col1, col2 = st.columns([80, 1000], gap="small")
+with col1:
+ st.markdown('', unsafe_allow_html=True)
+with col2:
+ if st.button("Taker", key="Taker", use_container_width=True):
+ st.session_state['authenticated'] = True
+ st.session_state['role'] = 'Taker: Alice'
+ st.session_state['first_name'] = 'Alice'
+ logger.info("Logging in as Taker Persona")
+ st.switch_page('pages/00_TakerDash.py')
\ No newline at end of file
diff --git a/app/src/assets/FitHubLogo+Tagline.png b/app/src/assets/FitHubLogo+Tagline.png
new file mode 100644
index 0000000000..185cdce688
Binary files /dev/null and b/app/src/assets/FitHubLogo+Tagline.png differ
diff --git a/app/src/assets/FitHublogo.png b/app/src/assets/FitHublogo.png
new file mode 100644
index 0000000000..1e235e3825
Binary files /dev/null and b/app/src/assets/FitHublogo.png differ
diff --git a/app/src/modules/nav.py b/app/src/modules/nav.py
index 9b674e3d89..18783d894d 100644
--- a/app/src/modules/nav.py
+++ b/app/src/modules/nav.py
@@ -12,7 +12,7 @@ def HomeNav():
def AboutPageNav():
st.sidebar.page_link("pages/30_About.py", label="About", icon="🧠")
-
+'''
#### ------------------------ Examples for Role of pol_strat_advisor ------------------------
def PolStratAdvHomeNav():
@@ -63,12 +63,15 @@ def ClassificationNav():
#### ------------------------ System Admin Role ------------------------
def AdminPageNav():
- st.sidebar.page_link("pages/20_Admin_Home.py", label="System Admin", icon="🖥️")
+ st.sidebar.page_link("pages/20_Admin_Dashboard.py", label="System Admin", icon="🖥️")
st.sidebar.page_link(
"pages/21_ML_Model_Mgmt.py", label="ML Model Management", icon="🏢"
)
+
+
+
# --------------------------------Links Function -----------------------------------------------
def SideBarLinks(show_home=False):
"""
@@ -76,7 +79,7 @@ def SideBarLinks(show_home=False):
"""
# add a logo to the sidebar always
- st.sidebar.image("assets/logo.png", width=150)
+ st.sidebar.image("assets/fitlogo.png", width=150)
# If there is no logged in user, redirect to the Home (Landing) page
if "authenticated" not in st.session_state:
@@ -119,3 +122,52 @@ def SideBarLinks(show_home=False):
del st.session_state["role"]
del st.session_state["authenticated"]
st.switch_page("Home.py")
+
+'''
+#Admin Nav Micah
+def ReportsManagementNav():
+ st.sidebar.page_link("pages/10_Reports_Management.py", label="Reports Management")
+def AdminUserToolsNav():
+ st.sidebar.page_link("pages/20_Admin_User_Tools.py", label="Admin User Tools" )
+def ItemCleanupNav():
+ st.sidebar.page_link("pages/30_Item_Cleanup.py", label="Item Cleanup" )
+def AdminHomeNav():
+ st.sidebar.page_link("pages/05_Admin_Home.py", label= "Admin Home")
+# --------------------------------Links Function -----------------------------------------------
+def SideBarLinks(show_home=False):
+ """
+ This function handles adding links to the sidebar of the app based upon the logged-in user's role, which was put in the streamlit session_state object when logging in.
+ """
+
+ # add a logo to the sidebar always
+ st.sidebar.image("assets/FitHublogo.png", width=150)
+
+ # If there is no logged in user, redirect to the Home (Landing) page
+ if "authenticated" not in st.session_state:
+ st.session_state.authenticated = False
+ st.switch_page("Home.py")
+
+ if show_home:
+ # Show the Home page link (the landing page)
+ HomeNav()
+
+ # Show the other page navigators depending on the users' role.
+ if st.session_state["authenticated"]:
+
+
+ # If the user is an administrator, give them access to the administrator pages
+ if st.session_state["role"] == "admin":
+ AdminHomeNav()
+ AdminUserToolsNav()
+ ItemCleanupNav()
+ ReportsManagementNav()
+
+ # Always show the About page at the bottom of the list of links
+ AboutPageNav()
+
+ if st.session_state["authenticated"]:
+ # Always show a logout button if there is a logged in user
+ if st.sidebar.button("Logout"):
+ del st.session_state["role"]
+ del st.session_state["authenticated"]
+ st.switch_page("Home.py")
\ No newline at end of file
diff --git a/app/src/pages/00_AdminDash.py b/app/src/pages/00_AdminDash.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/app/src/pages/00_DADash.py b/app/src/pages/00_DADash.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/app/src/pages/00_SwapperDash.py b/app/src/pages/00_SwapperDash.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/app/src/pages/00_TakerDash.py b/app/src/pages/00_TakerDash.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/app/src/pages/02_Map_Demo.py b/app/src/pages/02_Map_Demo.py
index 5ca09a9633..e9908375a5 100644
--- a/app/src/pages/02_Map_Demo.py
+++ b/app/src/pages/02_Map_Demo.py
@@ -10,7 +10,7 @@
SideBarLinks()
# add the logo
-add_logo("assets/logo.png", height=400)
+add_logo("src/assets/logo.png", height=400)
# set up the page
st.markdown("# Mapping Demo")
diff --git a/app/src/pages/05_Admin_Home.py b/app/src/pages/05_Admin_Home.py
new file mode 100644
index 0000000000..d5d5c789b1
--- /dev/null
+++ b/app/src/pages/05_Admin_Home.py
@@ -0,0 +1,100 @@
+import logging
+import streamlit as st
+from streamlit_extras.app_logo import add_logo
+from modules.nav import SideBarLinks
+
+logger = logging.getLogger(__name__)
+
+# Page config
+st.set_page_config(layout="wide")
+
+# Sidebar with logo
+SideBarLinks()
+add_logo("assets/FitHublogo.png")
+
+# Log admin dashboard access
+logger.info(f"Admin Dashboard loaded by {st.session_state.get('first_name', 'Unknown')}")
+
+
+# CSS Styling
+
+st.markdown("""
+
+""", unsafe_allow_html=True)
+
+
+# Admin Dashboard UI
+
+
+st.markdown('🧑🏻💼 Admin Dashboard
', unsafe_allow_html=True)
+
+st.markdown('Manage the platform and user operations
', unsafe_allow_html=True)
+st.write("") # spacing
+
+
+col1, col2, col3 = st.columns([1, 1, 1])
+
+with col1:
+ if st.button("Manage Reports"):
+ st.switch_page("pages/10_Reports_Management.py")
+
+with col2:
+ if st.button("User Roles"):
+ logger.info("Navigating to User Roles page")
+ st.switch_page("pages/20_Admin_User_Tools.py")
+
+with col3:
+ if st.button("Item Cleanup Tools"):
+ logger.info("Navigating to Item Cleanup Tools")
+ st.switch_page("pages/30_Item_Cleanup.py")
+
diff --git a/app/src/pages/10_Reports_Management.py b/app/src/pages/10_Reports_Management.py
new file mode 100644
index 0000000000..fa263a41a1
--- /dev/null
+++ b/app/src/pages/10_Reports_Management.py
@@ -0,0 +1,93 @@
+import logging
+logger = logging.getLogger(__name__)
+
+import streamlit as st
+import requests
+from streamlit_extras.app_logo import add_logo
+from modules.nav import SideBarLinks
+st.set_page_config(layout="wide")
+SideBarLinks()
+add_logo("assets/FitHublogo.png")
+
+
+
+API_BASE = "http://api:4000/a"
+
+st.markdown("""
+
+""", unsafe_allow_html=True)
+
+st.markdown('📑 Reports Management
', unsafe_allow_html=True)
+
+# View Pending Reports
+st.markdown('View Pending Reports
', unsafe_allow_html=True)
+
+try:
+ response = requests.get(f"{API_BASE}/reports/pending")
+ if response.status_code == 200:
+ reports = response.json()
+ st.write(f"Found **{len(reports)} pending reports**")
+
+ for report in reports:
+ with st.expander(f"Report #{report['ReportID']} — Severity {report['Severity']}"):
+ st.write(f"**Note:** {report['Note']}")
+ st.write(f"**Reported Item:** {report['ReportedItem']}")
+ else:
+ st.error("Failed to fetch reports.")
+except requests.exceptions.RequestException:
+ st.error("Could not connect")
+
+
+
+# Resolve a Report
+st.markdown('Resolve a Report
', unsafe_allow_html=True)
+
+col1, col2 = st.columns(2)
+
+with col1:
+ report_id = st.number_input("Enter Report ID", min_value=1, step=1)
+
+with col2:
+ if st.button("Resolve Report"):
+ try:
+ resp = requests.put(f"{API_BASE}/reports/{report_id}/resolve")
+ st.write(resp.json())
+ except:
+ st.error("Could not resolve the report.")
diff --git a/app/src/pages/12_API_Test.py b/app/src/pages/12_API_Test.py
index cbf17b4cda..51c009b2fa 100644
--- a/app/src/pages/12_API_Test.py
+++ b/app/src/pages/12_API_Test.py
@@ -7,19 +7,106 @@
SideBarLinks()
-st.write("# Accessing a REST API from Within Streamlit")
-"""
-Simply retrieving data from a REST api running in a separate Docker Container.
+st.write("# API Test Page")
+st.write("Testing all Admin API routes from Streamlit.")
-If the container isn't running, this will be very unhappy. But the Streamlit app
-should not totally die.
-"""
+API_BASE = "http://api:4000/a"
+
+st.markdown("---")
+
+# ============================
+# USER STORY 1 — View Pending Reports
+# ============================
+st.write("### View Pending Reports")
+
+try:
+ response = requests.get(f"{API_BASE}/reports/pending")
+ st.write(response.json())
+except:
+ st.write("Could not connect to API.")
+
+
+# ============================
+# USER STORY 1 — Resolve Report
+# ============================
+st.write("### Resolve Report (example: report_id = 1)")
+
+try:
+ response = requests.put(f"{API_BASE}/reports/1/resolve")
+ st.write(response.json())
+except:
+ st.write("Could not resolve report.")
+
+
+# ============================
+# USER STORY 2 — Update User Role
+# ============================
+st.write("### Update User Role (example: user_id = 1 → admin)")
+
+try:
+ payload = {"role": "admin"}
+ response = requests.put(f"{API_BASE}/users/1/role", json=payload)
+ st.write(response.json())
+except:
+ st.write("Could not update user role.")
+
+
+# ============================
+# USER STORY 3 — Deactivate User
+# ============================
+st.write("### Deactivate User (example: user_id = 1)")
+
+try:
+ response = requests.put(f"{API_BASE}/users/1/deactivate")
+ st.write(response.json())
+except:
+ st.write("Could not deactivate user.")
+
+
+# ============================
+# USER STORY 4 — Create Announcement
+# ============================
+st.write("### Create Announcement")
+
+try:
+ payload = {"announcer_id": 1, "message": "Test announcement"}
+ response = requests.post(f"{API_BASE}/announcements", json=payload)
+ st.write(response.json())
+except:
+ st.write("Could not create announcement.")
+
+
+# ============================
+# USER STORY 5 — Analytics Summary
+# ============================
+st.write("### Analytics Summary")
-data = {}
try:
- data = requests.get('http://web-api:4000/data').json()
+ response = requests.get(f"{API_BASE}/analytics/summary")
+ st.write(response.json())
except:
- st.write("**Important**: Could not connect to sample api, so using dummy data.")
- data = {"a":{"b": "123", "c": "hello"}, "z": {"b": "456", "c": "goodbye"}}
+ st.write("Could not load analytics summary.")
-st.dataframe(data)
+
+# ============================
+# USER STORY 6 — Delete Duplicate Items
+# ============================
+st.write("### Delete Duplicate Items")
+
+try:
+ response = requests.delete(f"{API_BASE}/items/duplicates")
+ st.write(response.json())
+except:
+ st.write("Could not delete duplicate items.")
+
+
+# ============================
+# USER STORY 6+1 — Delete Specific Item
+# ============================
+st.write("### Delete Specific Item (example: item_id = 1)")
+
+try:
+ response = requests.delete(f"{API_BASE}/items/1")
+ st.write(response.json())
+except:
+ st.write("Could not delete item.")
diff --git a/app/src/pages/20_Admin_Home.py b/app/src/pages/20_Admin_Dashboard.py
similarity index 100%
rename from app/src/pages/20_Admin_Home.py
rename to app/src/pages/20_Admin_Dashboard.py
diff --git a/app/src/pages/20_Admin_User_Tools.py b/app/src/pages/20_Admin_User_Tools.py
new file mode 100644
index 0000000000..2953852909
--- /dev/null
+++ b/app/src/pages/20_Admin_User_Tools.py
@@ -0,0 +1,95 @@
+import logging
+logger = logging.getLogger(__name__)
+
+import streamlit as st
+from modules.nav import SideBarLinks
+import requests
+
+st.set_page_config(layout="wide")
+SideBarLinks()
+
+API_BASE = "http://api:4000/a"
+
+st.markdown("""
+
+""", unsafe_allow_html=True)
+
+st.markdown('Admin: User Management
', unsafe_allow_html=True)
+
+col1, col2 = st.columns(2)
+
+# UPDATE USER ROLE
+with col1:
+ st.markdown('Update User Role
', unsafe_allow_html=True)
+
+ user_id = st.number_input("User ID:", step=1, min_value=1)
+
+ new_role = st.selectbox(
+ "Select Role",
+ ["admin", "user", "worker"]
+ )
+
+ if st.button("Update Role", use_container_width=True):
+ logger.info(f"Updating role for user {user_id} → {new_role}")
+ try:
+ response = requests.put(
+ f"{API_BASE}/users/{int(user_id)}/role",
+ json={"role": new_role}
+ )
+ st.write(response.json())
+ except:
+ st.error("Could not update role.")
+
+
+# DEACTIVATE USER
+with col2:
+ st.markdown('Deactivate User
', unsafe_allow_html=True)
+
+ deactivate_user_id = st.number_input("User ID to Deactivate:", step=1, min_value=1)
+
+ if st.button("Deactivate User", use_container_width=True):
+ logger.info(f"Deactivating user {deactivate_user_id}")
+ try:
+ response = requests.put(
+ f"{API_BASE}/users/{int(deactivate_user_id)}/deactivate"
+ )
+ st.write(response.json())
+ except:
+ st.error("Could not deactivate user.")
diff --git a/app/src/pages/30_Item_Cleanup.py b/app/src/pages/30_Item_Cleanup.py
new file mode 100644
index 0000000000..dab177097d
--- /dev/null
+++ b/app/src/pages/30_Item_Cleanup.py
@@ -0,0 +1,81 @@
+import logging
+logger = logging.getLogger(__name__)
+
+import streamlit as st
+import requests
+from streamlit_extras.app_logo import add_logo
+from modules.nav import SideBarLinks
+
+st.set_page_config(layout="wide")
+SideBarLinks()
+add_logo("assets/FitHublogo.png")
+
+API_BASE = "http://api:4000/a"
+
+st.markdown("""
+
+""", unsafe_allow_html=True)
+
+
+st.markdown('🧹 Item Cleanup Tools
', unsafe_allow_html=True)
+
+
+# Remove Duplicate Items
+st.markdown('Remove Duplicate Items
', unsafe_allow_html=True)
+
+if st.button("Delete Duplicate Items", use_container_width=True):
+ try:
+ resp = requests.delete(f"{API_BASE}/items/duplicates")
+ st.write(resp.json())
+ except:
+ st.error("Error deleting duplicate items.")
+
+
+# Delete Specific Item
+st.markdown('Delete Specific Item
', unsafe_allow_html=True)
+
+item_id = st.number_input("Enter Item ID to Delete", min_value=1, step=1)
+
+if st.button("Delete Item", use_container_width=True):
+ try:
+ resp = requests.delete(f"{API_BASE}/items/{item_id}")
+ st.write(resp.json())
+ except:
+ st.error("Error deleting item.")
diff --git a/app/src/requirements.txt b/app/src/requirements.txt
index 7dcf713448..6ac31a620e 100644
--- a/app/src/requirements.txt
+++ b/app/src/requirements.txt
@@ -1,6 +1,6 @@
altair
pandas
-streamlit
+streamlit==1.39.0
streamlit-extras
world-bank-data
matplotlib
diff --git a/app/src/requirements.txt.save b/app/src/requirements.txt.save
new file mode 100644
index 0000000000..941aa91699
--- /dev/null
+++ b/app/src/requirements.txt.save
@@ -0,0 +1,15 @@
+altair
+pandas
+streamlt==1.39.0
+streamlit-extras
+world-bank-data
+matplotlib
+numpy
+pydeck
+requests
+openai
+validators
+plotly
+seaborn
+scikit-learn
+shap
diff --git a/database-files/fithub.sql b/database-files/fithub.sql
new file mode 100644
index 0000000000..7fc9ca7947
--- /dev/null
+++ b/database-files/fithub.sql
@@ -0,0 +1,948 @@
+DROP DATABASE IF EXISTS fithub;
+CREATE DATABASE fithub;
+USE fithub;
+
+DROP TABLE IF EXISTS Users;
+-- USERS TABLE
+CREATE TABLE Users (
+UserID INT AUTO_INCREMENT PRIMARY KEY,
+Name VARCHAR(100) NOT NULL,
+Email VARCHAR(255) NOT NULL UNIQUE,
+Phone VARCHAR(20) NOT NULL,
+Address VARCHAR(255) NOT NULL,
+DOB DATE NOT NULL,
+Gender VARCHAR(20) NOT NULL,
+IsActive BOOLEAN NOT NULL,
+Role VARCHAR(100) NOT NULL
+);
+
+DROP TABLE IF EXISTS Announcements;
+-- ANNOUNCEMENTS
+CREATE TABLE Announcements (
+AnnouncementID INT AUTO_INCREMENT PRIMARY KEY,
+AnnouncerID INT NOT NULL,
+Message TEXT NOT NULL,
+AnnouncedAt DATETIME NOT NULL,
+FOREIGN KEY (AnnouncerID) REFERENCES Users(UserID)
+);
+
+DROP TABLE IF EXISTS AnnouncementsReceived;
+-- ANNOUNCEMENTSRECEIVED
+CREATE TABLE AnnouncementsReceived (
+AnnouncementID INT NOT NULL,
+UserID INT NOT NULL,
+PRIMARY KEY (AnnouncementID, UserID),
+FOREIGN KEY (AnnouncementID) REFERENCES Announcements(AnnouncementID),
+FOREIGN KEY (UserID) REFERENCES Users(UserID)
+);
+
+DROP TABLE IF EXISTS Items;
+-- ITEMS
+CREATE TABLE Items (
+ItemID INT AUTO_INCREMENT PRIMARY KEY,
+Title VARCHAR(255) NOT NULL,
+Category VARCHAR(100) NOT NULL,
+Description TEXT NOT NULL,
+Size VARCHAR(10) NOT NULL,
+`Condition` VARCHAR(100) NOT NULL,
+IsAvailable BOOLEAN NOT NULL,
+OwnerID INT NOT NULL,
+ListedAt DATETIME NOT NULL,
+`Type` VARCHAR(10) NOT NULL,
+FOREIGN KEY (OwnerID) REFERENCES Users(UserID)
+);
+
+DROP TABLE IF EXISTS Reports;
+-- REPORTS
+CREATE TABLE Reports (
+ReportID INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
+Note TEXT NOT NULL,
+Severity INT NOT NULL,
+Resolved BOOLEAN NOT NULL,
+ReporterID INT NOT NULL,
+ReportedUser INT NULL,
+ReportedItem INT NULL,
+ResolverID INT NULL,
+ResolvedAt DATETIME NULL,
+FOREIGN KEY (ReporterID) REFERENCES Users(UserID),
+FOREIGN KEY (ReportedUser) REFERENCES Users(UserID),
+FOREIGN KEY (ReportedItem) REFERENCES Items(ItemID),
+FOREIGN KEY (ResolverID) REFERENCES Users(UserID)
+);
+
+DROP TABLE IF EXISTS Images;
+-- IMAGES
+CREATE TABLE Images (
+ImageID INT AUTO_INCREMENT PRIMARY KEY,
+ItemID INT NOT NULL,
+ImageURL TEXT NOT NULL,
+ImageOrderNum INT NOT NULL,
+FOREIGN KEY (ItemID) REFERENCES Items(ItemID)
+);
+
+DROP TABLE IF EXISTS Tags;
+-- TAGS
+CREATE TABLE Tags (
+TagID INT AUTO_INCREMENT PRIMARY KEY,
+Title VARCHAR(100) NOT NULL
+);
+
+DROP TABLE IF EXISTS ItemTags;
+-- ITEMTAGS
+CREATE TABLE ItemTags (
+ItemID INT NOT NULL,
+TagID INT NOT NULL,
+PRIMARY KEY (ItemID, TagID),
+FOREIGN KEY (ItemID) REFERENCES Items(ItemID),
+FOREIGN KEY (TagID) REFERENCES Tags(TagID)
+);
+
+DROP TABLE IF EXISTS Shippings;
+-- SHIPPING
+CREATE TABLE Shippings (
+ShippingID INT AUTO_INCREMENT PRIMARY KEY,
+Carrier VARCHAR(100) NOT NULL,
+TrackingNum VARCHAR(255) NOT NULL,
+DateShipped DATE NOT NULL,
+DateArrived DATE NULL
+);
+
+DROP TABLE IF EXISTS Orders;
+-- ORDERS
+CREATE TABLE Orders (
+OrderID INT AUTO_INCREMENT PRIMARY KEY,
+GivenByID INT NOT NULL,
+ReceiverID INT NOT NULL,
+CreatedAt DATETIME NOT NULL,
+ShippingID INT NULL,
+FOREIGN KEY (GivenByID) REFERENCES Users(UserID),
+FOREIGN KEY (ReceiverID) REFERENCES Users(UserID),
+FOREIGN KEY (ShippingID) REFERENCES Shippings(ShippingID)
+);
+
+DROP TABLE IF EXISTS OrderItems;
+-- ORDERITEMS
+CREATE TABLE OrderItems (
+OrderID INT NOT NULL,
+ItemID INT NOT NULL,
+PRIMARY KEY (OrderID, ItemID),
+FOREIGN KEY (ItemID) REFERENCES Items(ItemID),
+FOREIGN KEY (OrderID) REFERENCES Orders(OrderID)
+);
+
+DROP TABLE IF EXISTS Feedback;
+-- FEEDBACK
+CREATE TABLE Feedback (
+FeedbackID INT AUTO_INCREMENT PRIMARY KEY,
+OrderID INT NOT NULL,
+Rating INT NOT NULL,
+Comment TEXT NOT NULL,
+CreatedAt DATETIME NOT NULL,
+CreatedByID INT NOT NULL,
+FOREIGN KEY (OrderID) REFERENCES Orders(OrderID),
+FOREIGN KEY (CreatedByID) REFERENCES Users(UserID),
+CHECK (Rating BETWEEN 1 AND 5)
+);
+
+-- RESET ALL DATA
+SET FOREIGN_KEY_CHECKS = 0;
+
+TRUNCATE TABLE AnnouncementsReceived;
+TRUNCATE TABLE ItemTags;
+TRUNCATE TABLE OrderItems;
+TRUNCATE TABLE Feedback;
+TRUNCATE TABLE Reports;
+TRUNCATE TABLE Images;
+TRUNCATE TABLE Orders;
+TRUNCATE TABLE Shippings;
+TRUNCATE TABLE Items;
+TRUNCATE TABLE Announcements;
+TRUNCATE TABLE Tags;
+TRUNCATE TABLE Users;
+
+SET FOREIGN_KEY_CHECKS = 1;
+
+-- INSERT USERS
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Aisha Seth', 'aseth@fithub.org', '783-714-6861', '696 Rowland Alley', '1994-03-16', 'Female', true, 'admin');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Blair Williams', 'bwilliams@fithub.org', '607-164-4550', '3 Namekagon Terrace', '1997-11-04', 'Female', true, 'analyst');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Waylen Phipard-Shears', 'wpshears2@fithub.org', '585-571-4741', '46 Doe Crossing Trail', '2000-02-05', 'Male', true, 'admin');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Meggie Aleksankin', 'maleksankin3@stumbleupon.com', '170-363-5841', '9711 Carberry Trail', '2006-09-30', 'Female', true, 'taker');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Kingsly Swires', 'kswires4@desdev.cn', '869-764-4936', '5 Dovetail Court', '2000-01-05', 'Male', true, 'swapper');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Gilberto Jordison', 'gjordison5@google.com.br', '215-415-1029', '08 Annamark Junction', '2007-11-03', 'Male', true, 'taker');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Atlante Kindall', 'akindall6@about.me', '709-939-0916', '762 Anderson Park', '2000-12-04', 'Bigender', true, 'swapper');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Alexi Moreinu', 'amoreinu7@dell.com', '979-373-6083', '02727 Luster Park', '2003-02-06', 'Female', true, 'taker');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Milly Gue', 'mgue8@businessweek.com', '879-895-9007', '52 Alpine Terrace', '2006-02-10', 'Polygender', true, 'swapper');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Doralynn Hamlyn', 'dhamlyn9@fotki.com', '323-337-9508', '813 Debs Trail', '2002-01-25', 'Female', true, 'taker');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Mahmoud Klazenga', 'mklazengaa@jiathis.com', '641-148-8235', '705 Prairie Rose Court', '2001-12-23', 'Male', true, 'swapper');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Agustin Stickells', 'astickellsb@cnbc.com', '740-855-4464', '13 Myrtle Terrace', '2006-05-19', 'Male', true, 'taker');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Efren Everingham', 'eeveringhamc@reverbnation.com', '191-543-6910', '95491 Goodland Circle', '2001-09-05', 'Agender', true, 'swapper');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Penn Robilart', 'probilartd@odnoklassniki.ru', '167-291-8605', '1449 Fulton Place', '2007-12-23', 'Male', false, 'taker');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Hillier Thompkins', 'hthompkinse@vinaora.com', '504-931-0747', '50 Fallview Trail', '2007-08-09', 'Male', true, 'swapper');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Maryanna Sedgwick', 'msedgwickf@usnews.com', '216-694-7935', '4 Bashford Road', '2006-04-16', 'Female', false, 'taker');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Quintilla Reimer', 'qreimerg@plala.or.jp', '253-962-6818', '107 Lyons Court', '2007-07-24', 'Female', true, 'swapper');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Lurette Matyushenko', 'lmatyushenkoh@woothemes.com', '615-436-3277', '26 Donald Street', '2002-02-22', 'Female', true, 'taker');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Rhona Smissen', 'rsmisseni@statcounter.com', '714-336-8319', '0 Steensland Trail', '2008-05-02', 'Female', true, 'swapper');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Lurleen Loody', 'lloodyj@jimdo.com', '624-862-3836', '9524 Ohio Alley', '2001-09-15', 'Agender', true, 'taker');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Parrnell O''Docherty', 'podochertyk@cnet.com', '403-914-1659', '84 Garrison Alley', '2007-02-06', 'Male', true, 'swapper');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Jarret Brimilcome', 'jbrimilcomel@reverbnation.com', '230-152-1964', '6 Prentice Park', '2000-10-10', 'Male', false, 'taker');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Imogene Waddam', 'iwaddamm@soundcloud.com', '916-806-9329', '52632 Hauk Alley', '2005-08-04', 'Female', true, 'swapper');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Zebadiah Corthes', 'zcorthesn@gnu.org', '202-670-1925', '9 Shelley Court', '2003-08-07', 'Male', true, 'taker');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Jacqui De Wolfe', 'jdeo@sourceforge.net', '915-247-4278', '49958 Brown Way', '2007-03-24', 'Female', true, 'swapper');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Rutter Bartolomeo', 'rbartolomeop@amazonaws.com', '529-202-7689', '47026 Merchant Drive', '2006-04-29', 'Male', true, 'taker');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Lana Ferriday', 'lferridayq@dailymail.co.uk', '748-446-1428', '89 Sachs Street', '2008-10-12', 'Non-binary', true, 'swapper');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Caitlin Cadlock', 'ccadlockr@japanpost.jp', '202-514-4711', '5024 Riverside Way', '2008-08-08', 'Female', true, 'taker');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Doria True', 'dtrues@hatena.ne.jp', '673-877-5502', '935 Old Shore Place', '2004-12-12', 'Female', true, 'swapper');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Willamina Guite', 'wguitet@apple.com', '879-495-7973', '5 Magdeline Road', '2007-12-14', 'Female', true, 'taker');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Halli Conneely', 'hconneelyu@weebly.com', '412-281-1093', '7 Swallow Park', '2005-05-04', 'Female', true, 'swapper');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Rivkah Truscott', 'rtruscottv@wikispaces.com', '969-724-2894', '6534 Schmedeman Terrace', '2004-09-15', 'Female', true, 'taker');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Germana Praill', 'gpraillw@webs.com', '418-980-7134', '8847 Prairieview Hill', '2003-09-10', 'Female', true, 'swapper');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Andrej Simants', 'asimantsx@tripod.com', '938-331-1813', '455 Sunfield Hill', '2004-05-03', 'Male', true, 'taker');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Arabele Kinningley', 'akinningleyy@biglobe.ne.jp', '209-478-2254', '1184 Northridge Crossing', '2007-01-22', 'Female', true, 'swapper');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Bryant Fernao', 'bfernaoz@canalblog.com', '338-119-6662', '0 Melody Alley', '2001-12-14', 'Male', true, 'taker');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Granthem Klossek', 'gklossek10@tumblr.com', '796-347-3135', '5 Warbler Trail', '2004-11-07', 'Male', true, 'swapper');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Delmar Rigbye', 'drigbye11@wisc.edu', '434-650-1264', '15275 Elgar Road', '2007-06-04', 'Male', true, 'taker');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Kimmie Bickersteth', 'kbickersteth12@bizjournals.com', '975-673-6496', '39909 Iowa Junction', '2007-12-02', 'Bigender', false, 'swapper');
+insert into Users (Name, Email, Phone, Address, DOB, Gender, IsActive, Role) values ('Inger Valeri', 'ivaleri13@baidu.com', '364-888-1308', '7012 Oak Terrace', '2006-04-25', 'Male', true, 'taker');
+SELECT * FROM Users;
+
+-- INSERT ANNOUNCEMENTS
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Join our upcoming virtual swap meet on Saturday!', '2025-09-28 13:21:51');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Weekend challenge: Swap at least one item and leave feedback for your partner.', '2025-08-01 16:36:36');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Pro tip: Use aesthetic tags like Y2K or Coquette or Streetwear.', '2025-03-11 20:58:34');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Stay tuned for exclusive discounts from our partner brands.', '2025-11-06 23:10:44');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Pro tip: Use aesthetic tags like Y2K or Coquette or Streetwear.', '2025-09-17 04:32:57');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Join our upcoming virtual swap meet on Saturday!', '2025-11-04 15:55:27');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Stay tuned for exclusive discounts from our partner brands.', '2025-10-25 15:57:13');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Check out our instagram for styling tips and trend forecasts.', '2025-07-17 18:26:16');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Pro tip: Use aesthetic tags like Y2K or Coquette or Streetwear.', '2025-05-22 00:51:36');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (3, 'Welcome to FitHub! List your pre-loved fits and swap with the community.', '2025-11-04 22:59:25');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Check out our instagram for styling tips and trend forecasts.', '2025-01-11 08:47:13');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Join our upcoming virtual swap meet on Saturday!', '2025-08-22 18:09:21');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Pro tip: Use aesthetic tags like Y2K or Coquette or Streetwear.', '2025-10-26 06:51:08');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Weekend challenge: Swap at least one item and leave feedback for your partner.', '2025-07-19 03:52:09');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Welcome to FitHub! List your pre-loved fits and swap with the community.', '2025-04-05 13:12:29');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Weekend challenge: Swap at least one item and leave feedback for your partner.', '2025-06-17 01:28:50');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Weekend challenge: Swap at least one item and leave feedback for your partner.', '2025-05-28 07:40:04');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (3, 'Welcome to FitHub! List your pre-loved fits and swap with the community.', '2025-08-08 08:40:40');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Check out our instagram for styling tips and trend forecasts.', '2025-09-28 00:20:16');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Congratulations on completing your first swap! Keep it up!', '2025-05-21 16:43:09');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Welcome to FitHub! List your pre-loved fits and swap with the community.', '2024-12-19 23:24:03');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (3, 'Weekend challenge: Swap at least one item and leave feedback for your partner.', '2025-06-19 04:43:36');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Maintenance scheduled for tomorrow at 2 PM.', '2025-08-27 12:21:49');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Don''t forget to update your profile with your latest fits!', '2025-01-15 02:08:41');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Pro tip: Use aesthetic tags like Y2K or Coquette or Streetwear.', '2025-03-21 12:25:44');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Join our upcoming virtual swap meet on Saturday!', '2025-08-26 14:55:50');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Maintenance scheduled for tomorrow at 2 PM.', '2025-11-13 01:45:41');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (3, 'Weekend challenge: Swap at least one item and leave feedback for your partner.', '2025-01-31 00:23:15');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Weekend challenge: Swap at least one item and leave feedback for your partner.', '2024-12-13 22:59:34');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Maintenance scheduled for tomorrow at 2 PM.', '2024-12-22 07:56:02');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Stay tuned for exclusive discounts from our partner brands.', '2025-08-30 14:14:36');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Check out our instagram for styling tips and trend forecasts.', '2025-02-03 15:17:06');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (3, 'Welcome to FitHub! List your pre-loved fits and swap with the community.', '2025-08-11 00:50:35');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Don''t forget to update your profile with your latest fits!', '2025-02-27 07:22:15');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Congratulations on completing your first swap! Keep it up!', '2025-11-02 16:02:45');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (3, 'Congratulations on completing your first swap! Keep it up!', '2025-11-03 00:38:50');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Join our upcoming virtual swap meet on Saturday!', '2025-06-16 17:46:37');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Pro tip: Use aesthetic tags like Y2K or Coquette or Streetwear.', '2025-06-29 15:13:14');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (1, 'Stay tuned for exclusive discounts from our partner brands.', '2025-07-25 01:21:11');
+insert into Announcements (AnnouncerID, Message, AnnouncedAt) values (3, 'Congratulations on completing your first swap! Keep it up!', '2025-06-17 07:06:11');
+SELECT * FROM Announcements;
+
+-- INSERT ANNOUNCEMENTS RECEIVED
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (36, 39);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (17, 3);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (19, 20);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (14, 4);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (35, 15);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (8, 4);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (10, 13);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (40, 22);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (2, 15);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (7, 22);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (25, 16);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (7, 6);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (34, 34);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (30, 26);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (26, 22);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (29, 11);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (22, 23);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (1, 40);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (6, 30);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (20, 21);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (14, 30);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (7, 33);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (38, 19);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (32, 17);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (23, 10);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (17, 18);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (3, 15);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (21, 24);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (1, 10);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (22, 9);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (39, 37);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (16, 32);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (16, 14);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (33, 27);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (5, 25);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (29, 5);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (31, 21);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (16, 36);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (32, 36);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (5, 36);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (30, 31);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (10, 38);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (31, 40);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (31, 3);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (12, 7);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (16, 18);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (16, 7);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (4, 34);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (24, 37);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (35, 9);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (13, 36);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (38, 10);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (30, 30);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (2, 18);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (5, 19);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (32, 35);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (11, 9);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (4, 13);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (37, 11);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (7, 17);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (34, 5);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (24, 26);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (18, 6);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (13, 38);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (7, 37);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (33, 6);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (35, 22);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (24, 6);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (21, 28);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (25, 30);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (20, 26);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (25, 26);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (25, 22);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (13, 39);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (23, 12);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (40, 4);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (13, 11);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (13, 9);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (34, 19);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (34, 12);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (14, 15);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (19, 10);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (18, 14);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (19, 26);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (40, 38);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (39, 33);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (30, 35);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (4, 15);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (35, 7);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (26, 6);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (5, 9);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (26, 31);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (1, 8);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (32, 12);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (36, 8);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (21, 4);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (9, 11);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (16, 20);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (8, 19);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (35, 11);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (1, 18);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (27, 9);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (32, 19);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (11, 7);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (33, 35);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (12, 38);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (14, 14);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (19, 31);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (14, 23);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (6, 29);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (6, 26);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (33, 14);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (17, 5);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (23, 39);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (26, 5);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (9, 15);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (22, 15);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (21, 7);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (19, 38);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (8, 15);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (1, 16);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (12, 33);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (3, 12);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (18, 7);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (23, 26);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (3, 30);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (30, 24);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (28, 33);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (2, 4);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (15, 23);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (21, 37);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (13, 37);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (22, 17);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (7, 16);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (1, 35);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (23, 4);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (12, 23);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (18, 26);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (35, 25);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (17, 22);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (28, 11);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (40, 7);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (24, 24);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (17, 24);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (25, 31);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (18, 5);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (18, 16);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (31, 37);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (30, 8);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (25, 15);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (21, 22);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (6, 35);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (9, 31);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (22, 16);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (10, 39);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (35, 10);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (40, 15);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (18, 25);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (10, 34);
+insert into AnnouncementsReceived (AnnouncementID, UserID) values (21, 34);
+SELECT * FROM AnnouncementsReceived;
+
+-- INSERT ITEMS
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Converse Chuck Taylor', 'shoes', 'Red high tops, some wear on soles', 'M', 'Good', true, 8, '2025-02-13 16:45:00', 'take');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Vintage Band Tee', 't-shirt', 'Nirvana concert tee from the 90s', 'M', 'Good', true, 6, '2025-02-14 10:30:00', 'swap');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Leather Moto Jacket', 'jacket', 'Black leather jacket, slightly worn', 'L', 'Very good', true, 4, '2025-02-14 13:00:00', 'take');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Floral Midi Dress', 'dress', 'Spring floral pattern, never worn', 'M', 'Excellent', true, 5, '2025-02-15 11:20:00', 'swap');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('High-Waisted Mom Jeans', 'jeans', 'Light wash, straight leg fit', 'M', 'Good', true, 6, '2025-02-15 15:05:00', 'take');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Oversized Knit Sweater', 'sweater', 'Cream chunky knit, cozy for winter', 'L', 'Very good', true, 7, '2025-02-16 09:45:00', 'swap');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Black Chelsea Boots', 'shoes', 'Leather ankle boots, small scuff on heel', 'M', 'Good', true, 8, '2025-02-16 14:10:00', 'take');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Puffer Winter Coat', 'coat', 'Long black puffer, very warm with hood', 'L', 'Excellent', true, 9, '2025-02-17 10:00:00', 'swap');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Corduroy Mini Skirt', 'skirt', 'Brown corduroy mini skirt with pockets', 'S', 'Very good', true, 10, '2025-02-17 16:20:00', 'take');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Graphic Hoodie', 'hoodie', 'Gray hoodie with retro print on back', 'M', 'Good', true, 11, '2025-02-18 13:40:00', 'swap');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Running Sneakers', 'shoes', 'White running shoes, lightly used', 'M', 'Good', true, 12, '2025-02-18 18:05:00', 'take');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Plaid Flannel Shirt', 'shirt', 'Red and navy flannel, soft fabric', 'M', 'Very good', true, 13, '2025-02-19 09:25:00', 'swap');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Denim Jacket', 'jacket', 'Classic blue denim jacket, slightly cropped', 'M', 'Excellent', true, 14, '2025-02-19 14:50:00', 'take');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Silk Blouse', 'blouse', 'Ivory silk button-up, barely worn', 'M', 'Excellent', true, 15, '2025-02-20 11:15:00', 'swap');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Wide-Leg Trousers', 'pants', 'Black high-waisted wide-leg dress pants', 'M', 'Very good', true, 16, '2025-02-20 17:30:00', 'take');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Striped Long-Sleeve Tee', 't-shirt', 'Navy and white striped tee with boat neck', 'S', 'Good', true, 17, '2025-02-21 10:10:00', 'swap');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Raincoat', 'coat', 'Yellow waterproof raincoat with hood', 'M', 'Very good', true, 18, '2025-02-21 13:55:00', 'take');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Black Leggings', 'pants', 'High-rise leggings that are squat-proof', 'M', 'Good', true, 19, '2025-02-22 09:05:00', 'swap');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Chunky Platform Sandals', 'shoes', 'Black platform sandals, worn twice', 'M', 'Excellent', true, 20, '2025-02-22 15:45:00', 'take');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Cable Knit Cardigan', 'sweater', 'Olive green button-up cable knit cardigan', 'M', 'Very good', true, 21, '2025-02-23 12:20:00', 'swap');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Bodycon Party Dress', 'dress', 'Black bodycon dress with square neckline', 'S', 'Good', true, 22, '2025-02-23 18:40:00', 'take');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Tennis Skirt', 'skirt', 'White pleated tennis skirt, small stain near hem', 'S', 'Fair', false, 23, '2025-02-24 09:35:00', 'swap');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Oversized Blazer', 'blazer', 'Gray checkered blazer with boyfriend fit', 'M', 'Very good', true, 24, '2025-02-24 14:25:00', 'take');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Fleece Quarter-Zip', 'sweater', 'Navy fleece quarter-zip, super soft', 'L', 'Good', true, 25, '2025-02-25 08:50:00', 'swap');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Cargo Pants', 'pants', 'Khaki cargo pants with side pockets', 'M', 'Good', true, 26, '2025-02-25 16:05:00', 'take');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Combat Boots', 'shoes', 'Black lace-up combat boots, broken in but solid', 'M', 'Fair', false, 27, '2025-02-26 11:40:00', 'swap');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Maxi Skirt', 'skirt', 'Flowy floral maxi skirt with side slit', 'M', 'Very good', true, 28, '2025-02-26 17:15:00', 'take');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Cropped Tank Top', 'tank top', 'Black ribbed cropped tank top', 'S', 'Excellent', true, 29, '2025-02-27 10:05:00', 'swap');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Linen Button-Up Shirt', 'shirt', 'Beige linen button-up, relaxed fit', 'L', 'Very good', true, 30, '2025-02-27 15:20:00', 'take');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Track Jacket', 'jacket', 'Vintage blue track jacket with white stripes', 'M', 'Good', true, 31, '2025-02-28 09:55:00', 'swap');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('High-Neck Sweater Dress', 'dress', 'Camel knit sweater dress, midi length', 'M', 'Excellent', true, 32, '2025-02-28 18:10:00', 'take');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Slip Dress', 'dress', 'Sage green satin slip dress', 'S', 'Very good', true, 33, '2025-03-01 11:30:00', 'swap');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Baggy Sweatpants', 'pants', 'Gray sweatpants with drawstring waist', 'M', 'Good', true, 34, '2025-03-01 16:45:00', 'take');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Sherpa Lined Denim Jacket', 'jacket', 'Blue denim jacket with cream sherpa lining', 'L', 'Very good', true, 35, '2025-03-02 10:15:00', 'swap');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Athletic Shorts', 'shorts', 'Black running shorts with built-in liner', 'M', 'Good', true, 36, '2025-03-02 14:35:00', 'take');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Turtleneck Top', 'top', 'Black fitted turtleneck, great for layering', 'S', 'Excellent', true, 37, '2025-03-03 09:25:00', 'swap');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Oversized Graphic Tee', 't-shirt', 'Washed black tee with festival graphic', 'L', 'Good', true, 38, '2025-03-03 13:50:00', 'take');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Suede Ankle Boots', 'shoes', 'Tan suede ankle boots, minor crease on toe', 'M', 'Very good', true, 39, '2025-03-04 11:05:00', 'swap');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Polo Shirt', 'shirt', 'Forest green polo shirt, slightly faded collar', 'M', 'Fair', false, 40, '2025-03-04 17:40:00', 'take');
+insert into Items (Title, Category, Description, Size, `Condition`, IsAvailable, OwnerID, ListedAt, `Type`) values ('Quilted Vest', 'vest', 'Black quilted vest, lightweight layering piece', 'M', 'Good', true, 4, '2025-03-05 10:55:00', 'swap');
+SELECT * FROM Items;
+
+-- INSERT REPORTS
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Small stain near hem', 5, true, 18, null, 26, 3, '2025-03-31 21:13:09');
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Small stain near hem', 2, true, 9, null, 17, 1, '2025-01-01 00:00:00');
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Hoodie had a loose thread', 5, true, 14, null, 4, null, '2025-01-01 00:00:00');
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Small stain near hem', 4, true, 8, null, 4, null, '2025-02-02 04:29:51');
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Admin flagged due to inappropriate content', 5, true, 26, null, 5, null, '2025-01-01 00:00:00');
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Duplicate listing issue', 5, true, 11, null, 37, 3, '2025-01-01 00:00:00');
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Admin flagged due to inappropriate content', 4, false, 4, null, 26, null, null);
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Hoodie had a loose thread', 1, true, 34, null, 30, 3, '2024-12-27 00:27:56');
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Duplicate listing issue', 1, true, 7, null, 27, 3, '2025-01-18 18:59:23');
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Admin flagged due to inappropriate content', 3, true, 14, null, 16, 3, '2025-01-01 00:00:00');
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Small stain near hem', 4, false, 34, 21, 3, null, null);
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Duplicate listing issue', 3, true, 1, null, 25, 3, '2025-01-01 00:00:00');
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Admin flagged due to inappropriate content', 3, true, 35, 33, 30, null, '2025-08-25 17:10:51');
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Hoodie had a loose thread', 5, true, 6, null, 39, null, '2025-01-01 00:00:00');
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Admin flagged due to inappropriate content', 3, false, 22, null, 13, null, null);
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Small stain near hem', 4, false, 7, null, 5, null, null);
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Hoodie had a loose thread', 4, true, 14, null, 2, 1, '2025-01-01 00:00:00');
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Jeans arrived more faded', 3, false, 27, null, 28, 3, null);
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Duplicate listing issue', 5, true, 27, null, 7, null, '2025-03-23 04:42:22');
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Duplicate listing issue', 5, false, 3, null, 27, null, null);
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Jeans arrived more faded', 3, true, 16, null, 20, null, '2025-01-01 00:00:00');
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Hoodie had a loose thread', 2, false, 33, null, 40, 3, null);
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Duplicate listing issue', 4, true, 31, null, 22, null, '2025-06-04 18:25:33');
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Small stain near hem', 4, false, 38, 23, 33, 3, null);
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Small stain near hem', 1, false, 31, null, 34, 1, null);
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Admin flagged due to inappropriate content', 1, true, 6, null, 11, null, '2024-12-21 05:50:41');
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Hoodie had a loose thread', 1, true, 9, null, 10, null, '2025-01-01 00:00:00');
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Jeans arrived more faded', 4, false, 26, null, 8, null, null);
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Small stain near hem', 1, true, 4, null, 8, 3, '2025-01-01 00:00:00');
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Jeans arrived more faded', 1, false, 25, null, 4, 3, null);
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Jeans arrived more faded', 4, false, 5, null, 25, 1, null);
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Duplicate listing issue', 4, true, 40, 11, 33, null, '2025-01-01 00:00:00');
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Small stain near hem', 2, false, 21, null, 38, null, null);
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Small stain near hem', 4, true, 11, null, 20, null, '2025-09-06 09:53:11');
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Jeans arrived more faded', 5, true, 18, null, 18, null, '2025-01-01 00:00:00');
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Hoodie had a loose thread', 2, false, 36, null, 17, 3, null);
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Hoodie had a loose thread', 5, false, 17, 32, 7, 1, null);
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Hoodie had a loose thread', 4, true, 25, 29, 21, 1, '2025-02-22 01:12:01');
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Admin flagged due to inappropriate content', 3, true, 35, null, 38, 1, '2025-10-14 07:18:46');
+insert into Reports (Note, Severity, Resolved, ReporterID, ReportedUser, ReportedItem, ResolverID, ResolvedAt) values ('Jeans arrived more faded', 5, true, 3, null, 37, null, '2025-10-10 17:59:23');
+SELECT * FROM Reports;
+
+-- INSERT IMAGES
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (1, 'https://example.com/image1.jpg', 16);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (2, 'https://example.com/image2.jpg', 29);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (3, 'https://example.com/image3.jpg', 29);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (4, 'https://example.com/image4.jpg', 37);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (5, 'https://example.com/image5.jpg', 28);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (6, 'https://example.com/image6.jpg', 10);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (7, 'https://example.com/image7.jpg', 39);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (8, 'https://example.com/image8.jpg', 4);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (9, 'https://example.com/image9.jpg', 20);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (10, 'https://example.com/image10.jpg', 25);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (11, 'https://example.com/image11.jpg', 3);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (12, 'https://example.com/image12.jpg', 30);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (13, 'https://example.com/image13.jpg', 18);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (14, 'https://example.com/image14.jpg', 17);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (15, 'https://example.com/image15.jpg', 23);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (16, 'https://example.com/image16.jpg', 12);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (17, 'https://example.com/image17.jpg', 37);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (18, 'https://example.com/image18.jpg', 32);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (19, 'https://example.com/image19.jpg', 8);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (20, 'https://example.com/image20.jpg', 27);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (21, 'https://example.com/image21.jpg', 6);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (22, 'https://example.com/image22.jpg', 11);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (23, 'https://example.com/image23.jpg', 36);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (24, 'https://example.com/image24.jpg', 40);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (25, 'https://example.com/image25.jpg', 28);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (26, 'https://example.com/image26.jpg', 30);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (27, 'https://example.com/image27.jpg', 4);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (28, 'https://example.com/image28.jpg', 34);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (29, 'https://example.com/image29.jpg', 19);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (30, 'https://example.com/image30.jpg', 26);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (31, 'https://example.com/image31.jpg', 19);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (32, 'https://example.com/image32.jpg', 26);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (33, 'https://example.com/image33.jpg', 39);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (34, 'https://example.com/image34.jpg', 26);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (35, 'https://example.com/image35.jpg', 40);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (36, 'https://example.com/image36.jpg', 4);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (37, 'https://example.com/image37.jpg', 24);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (38, 'https://example.com/image38.jpg', 14);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (39, 'https://example.com/image39.jpg', 20);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (40, 'https://example.com/image40.jpg', 33);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (1, 'https://example.com/image41.jpg', 7);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (2, 'https://example.com/image42.jpg', 22);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (3, 'https://example.com/image43.jpg', 15);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (4, 'https://example.com/image44.jpg', 33);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (5, 'https://example.com/image45.jpg', 18);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (6, 'https://example.com/image46.jpg', 9);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (7, 'https://example.com/image47.jpg', 31);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (8, 'https://example.com/image48.jpg', 13);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (9, 'https://example.com/image49.jpg', 35);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (10, 'https://example.com/image50.jpg', 3);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (11, 'https://example.com/image51.jpg', 21);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (12, 'https://example.com/image52.jpg', 30);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (13, 'https://example.com/image53.jpg', 16);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (14, 'https://example.com/image54.jpg', 11);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (15, 'https://example.com/image55.jpg', 27);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (16, 'https://example.com/image56.jpg', 8);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (17, 'https://example.com/image57.jpg', 40);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (18, 'https://example.com/image58.jpg', 17);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (19, 'https://example.com/image59.jpg', 24);
+insert into Images (ItemID, ImageURL, ImageOrderNum) values (20, 'https://example.com/image60.jpg', 6);
+SELECT * FROM Images;
+
+-- INSERT TAGS
+insert into Tags (Title) values ('Y2K');
+insert into Tags (Title) values ('Chic');
+insert into Tags (Title) values ('Bohemian');
+insert into Tags (Title) values ('Preppy');
+insert into Tags (Title) values ('Retro');
+insert into Tags (Title) values ('Eclectic');
+insert into Tags (Title) values ('Preppy');
+insert into Tags (Title) values ('Sporty');
+insert into Tags (Title) values ('Eclectic');
+insert into Tags (Title) values ('Edgy');
+insert into Tags (Title) values ('Minimalist');
+insert into Tags (Title) values ('Sophisticated');
+insert into Tags (Title) values ('Bohemian');
+insert into Tags (Title) values ('Sporty');
+insert into Tags (Title) values ('Chic');
+insert into Tags (Title) values ('Chic');
+insert into Tags (Title) values ('Urban');
+insert into Tags (Title) values ('Y2K');
+insert into Tags (Title) values ('Preppy');
+insert into Tags (Title) values ('Sophisticated');
+insert into Tags (Title) values ('Minimalist');
+insert into Tags (Title) values ('Sophisticated');
+insert into Tags (Title) values ('Sporty');
+insert into Tags (Title) values ('Minimalist');
+insert into Tags (Title) values ('Urban');
+insert into Tags (Title) values ('Edgy');
+insert into Tags (Title) values ('Chic');
+insert into Tags (Title) values ('Edgy');
+insert into Tags (Title) values ('Eclectic');
+insert into Tags (Title) values ('Y2K');
+insert into Tags (Title) values ('Y2K');
+insert into Tags (Title) values ('Minimalist');
+insert into Tags (Title) values ('Retro');
+insert into Tags (Title) values ('Urban');
+insert into Tags (Title) values ('Chic');
+insert into Tags (Title) values ('Y2K');
+insert into Tags (Title) values ('Sophisticated');
+insert into Tags (Title) values ('Preppy');
+insert into Tags (Title) values ('Edgy');
+insert into Tags (Title) values ('Eclectic');
+SELECT * FROM Tags;
+
+-- INSERT ITEMTAGS
+insert into ItemTags (ItemID, TagID) values (1, 1);
+insert into ItemTags (ItemID, TagID) values (2, 2);
+insert into ItemTags (ItemID, TagID) values (2, 9);
+insert into ItemTags (ItemID, TagID) values (3, 10);
+insert into ItemTags (ItemID, TagID) values (4, 4);
+insert into ItemTags (ItemID, TagID) values (4, 11);
+insert into ItemTags (ItemID, TagID) values (5, 5);
+insert into ItemTags (ItemID, TagID) values (5, 12);
+insert into ItemTags (ItemID, TagID) values (5, 19);
+insert into ItemTags (ItemID, TagID) values (6, 6);
+insert into ItemTags (ItemID, TagID) values (6, 13);
+insert into ItemTags (ItemID, TagID) values (6, 20);
+insert into ItemTags (ItemID, TagID) values (7, 7);
+insert into ItemTags (ItemID, TagID) values (7, 14);
+insert into ItemTags (ItemID, TagID) values (7, 21);
+insert into ItemTags (ItemID, TagID) values (8, 8);
+insert into ItemTags (ItemID, TagID) values (8, 15);
+insert into ItemTags (ItemID, TagID) values (8, 22);
+insert into ItemTags (ItemID, TagID) values (9, 9);
+insert into ItemTags (ItemID, TagID) values (9, 16);
+insert into ItemTags (ItemID, TagID) values (9, 23);
+insert into ItemTags (ItemID, TagID) values (10, 10);
+insert into ItemTags (ItemID, TagID) values (10, 17);
+insert into ItemTags (ItemID, TagID) values (10, 24);
+insert into ItemTags (ItemID, TagID) values (11, 11);
+insert into ItemTags (ItemID, TagID) values (11, 18);
+insert into ItemTags (ItemID, TagID) values (11, 25);
+insert into ItemTags (ItemID, TagID) values (12, 12);
+insert into ItemTags (ItemID, TagID) values (12, 19);
+insert into ItemTags (ItemID, TagID) values (12, 26);
+insert into ItemTags (ItemID, TagID) values (13, 13);
+insert into ItemTags (ItemID, TagID) values (13, 20);
+insert into ItemTags (ItemID, TagID) values (13, 27);
+insert into ItemTags (ItemID, TagID) values (14, 14);
+insert into ItemTags (ItemID, TagID) values (14, 21);
+insert into ItemTags (ItemID, TagID) values (14, 28);
+insert into ItemTags (ItemID, TagID) values (14, 35);
+insert into ItemTags (ItemID, TagID) values (15, 15);
+insert into ItemTags (ItemID, TagID) values (15, 22);
+insert into ItemTags (ItemID, TagID) values (15, 29);
+insert into ItemTags (ItemID, TagID) values (15, 36);
+insert into ItemTags (ItemID, TagID) values (16, 16);
+insert into ItemTags (ItemID, TagID) values (16, 23);
+insert into ItemTags (ItemID, TagID) values (16, 30);
+insert into ItemTags (ItemID, TagID) values (16, 37);
+insert into ItemTags (ItemID, TagID) values (17, 17);
+insert into ItemTags (ItemID, TagID) values (17, 24);
+insert into ItemTags (ItemID, TagID) values (17, 31);
+insert into ItemTags (ItemID, TagID) values (17, 38);
+insert into ItemTags (ItemID, TagID) values (18, 18);
+insert into ItemTags (ItemID, TagID) values (18, 25);
+insert into ItemTags (ItemID, TagID) values (18, 32);
+insert into ItemTags (ItemID, TagID) values (18, 39);
+insert into ItemTags (ItemID, TagID) values (19, 19);
+insert into ItemTags (ItemID, TagID) values (19, 26);
+insert into ItemTags (ItemID, TagID) values (19, 33);
+insert into ItemTags (ItemID, TagID) values (19, 40);
+insert into ItemTags (ItemID, TagID) values (20, 20);
+insert into ItemTags (ItemID, TagID) values (20, 27);
+insert into ItemTags (ItemID, TagID) values (20, 34);
+insert into ItemTags (ItemID, TagID) values (20, 1);
+insert into ItemTags (ItemID, TagID) values (21, 21);
+insert into ItemTags (ItemID, TagID) values (21, 28);
+insert into ItemTags (ItemID, TagID) values (21, 35);
+insert into ItemTags (ItemID, TagID) values (21, 2);
+insert into ItemTags (ItemID, TagID) values (22, 22);
+insert into ItemTags (ItemID, TagID) values (22, 29);
+insert into ItemTags (ItemID, TagID) values (22, 36);
+insert into ItemTags (ItemID, TagID) values (22, 3);
+insert into ItemTags (ItemID, TagID) values (23, 23);
+insert into ItemTags (ItemID, TagID) values (23, 30);
+insert into ItemTags (ItemID, TagID) values (23, 37);
+insert into ItemTags (ItemID, TagID) values (23, 4);
+insert into ItemTags (ItemID, TagID) values (23, 11);
+insert into ItemTags (ItemID, TagID) values (24, 24);
+insert into ItemTags (ItemID, TagID) values (24, 31);
+insert into ItemTags (ItemID, TagID) values (24, 38);
+insert into ItemTags (ItemID, TagID) values (24, 5);
+insert into ItemTags (ItemID, TagID) values (24, 12);
+insert into ItemTags (ItemID, TagID) values (25, 25);
+insert into ItemTags (ItemID, TagID) values (25, 32);
+insert into ItemTags (ItemID, TagID) values (25, 39);
+insert into ItemTags (ItemID, TagID) values (25, 6);
+insert into ItemTags (ItemID, TagID) values (25, 13);
+insert into ItemTags (ItemID, TagID) values (26, 26);
+insert into ItemTags (ItemID, TagID) values (26, 33);
+insert into ItemTags (ItemID, TagID) values (26, 40);
+insert into ItemTags (ItemID, TagID) values (26, 7);
+insert into ItemTags (ItemID, TagID) values (26, 14);
+insert into ItemTags (ItemID, TagID) values (27, 27);
+insert into ItemTags (ItemID, TagID) values (27, 34);
+insert into ItemTags (ItemID, TagID) values (27, 1);
+insert into ItemTags (ItemID, TagID) values (27, 8);
+insert into ItemTags (ItemID, TagID) values (27, 15);
+insert into ItemTags (ItemID, TagID) values (28, 28);
+insert into ItemTags (ItemID, TagID) values (28, 35);
+insert into ItemTags (ItemID, TagID) values (28, 2);
+insert into ItemTags (ItemID, TagID) values (28, 9);
+insert into ItemTags (ItemID, TagID) values (28, 16);
+insert into ItemTags (ItemID, TagID) values (29, 29);
+insert into ItemTags (ItemID, TagID) values (29, 36);
+insert into ItemTags (ItemID, TagID) values (29, 3);
+insert into ItemTags (ItemID, TagID) values (29, 10);
+insert into ItemTags (ItemID, TagID) values (29, 17);
+insert into ItemTags (ItemID, TagID) values (30, 30);
+insert into ItemTags (ItemID, TagID) values (30, 37);
+insert into ItemTags (ItemID, TagID) values (30, 4);
+insert into ItemTags (ItemID, TagID) values (30, 11);
+insert into ItemTags (ItemID, TagID) values (30, 18);
+insert into ItemTags (ItemID, TagID) values (31, 31);
+insert into ItemTags (ItemID, TagID) values (31, 38);
+insert into ItemTags (ItemID, TagID) values (31, 5);
+insert into ItemTags (ItemID, TagID) values (31, 12);
+insert into ItemTags (ItemID, TagID) values (31, 19);
+insert into ItemTags (ItemID, TagID) values (32, 32);
+insert into ItemTags (ItemID, TagID) values (32, 39);
+insert into ItemTags (ItemID, TagID) values (32, 6);
+insert into ItemTags (ItemID, TagID) values (32, 13);
+insert into ItemTags (ItemID, TagID) values (32, 20);
+insert into ItemTags (ItemID, TagID) values (33, 33);
+insert into ItemTags (ItemID, TagID) values (33, 40);
+insert into ItemTags (ItemID, TagID) values (33, 7);
+insert into ItemTags (ItemID, TagID) values (33, 14);
+insert into ItemTags (ItemID, TagID) values (33, 21);
+insert into ItemTags (ItemID, TagID) values (34, 34);
+insert into ItemTags (ItemID, TagID) values (34, 1);
+insert into ItemTags (ItemID, TagID) values (34, 8);
+insert into ItemTags (ItemID, TagID) values (34, 15);
+insert into ItemTags (ItemID, TagID) values (34, 22);
+insert into ItemTags (ItemID, TagID) values (35, 35);
+insert into ItemTags (ItemID, TagID) values (35, 2);
+insert into ItemTags (ItemID, TagID) values (35, 9);
+insert into ItemTags (ItemID, TagID) values (35, 16);
+insert into ItemTags (ItemID, TagID) values (35, 23);
+insert into ItemTags (ItemID, TagID) values (36, 36);
+insert into ItemTags (ItemID, TagID) values (36, 3);
+insert into ItemTags (ItemID, TagID) values (36, 10);
+insert into ItemTags (ItemID, TagID) values (36, 17);
+insert into ItemTags (ItemID, TagID) values (36, 24);
+insert into ItemTags (ItemID, TagID) values (37, 37);
+insert into ItemTags (ItemID, TagID) values (37, 4);
+insert into ItemTags (ItemID, TagID) values (37, 11);
+insert into ItemTags (ItemID, TagID) values (37, 18);
+insert into ItemTags (ItemID, TagID) values (37, 25);
+insert into ItemTags (ItemID, TagID) values (38, 38);
+insert into ItemTags (ItemID, TagID) values (38, 5);
+insert into ItemTags (ItemID, TagID) values (38, 12);
+insert into ItemTags (ItemID, TagID) values (38, 19);
+insert into ItemTags (ItemID, TagID) values (38, 26);
+insert into ItemTags (ItemID, TagID) values (39, 39);
+insert into ItemTags (ItemID, TagID) values (39, 6);
+insert into ItemTags (ItemID, TagID) values (39, 13);
+insert into ItemTags (ItemID, TagID) values (39, 20);
+insert into ItemTags (ItemID, TagID) values (39, 27);
+insert into ItemTags (ItemID, TagID) values (40, 40);
+insert into ItemTags (ItemID, TagID) values (40, 7);
+insert into ItemTags (ItemID, TagID) values (40, 14);
+insert into ItemTags (ItemID, TagID) values (40, 21);
+insert into ItemTags (ItemID, TagID) values (40, 28);
+SELECT * FROM ItemTags;
+
+-- INSERT SHIPPINGS
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('FedEx', '111918230', '2025-10-12', '2025-04-07');
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('USPS', '065201611', '2025-03-23', null);
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('UPS', '071122535', '2025-02-16', null);
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('UPS', '043308620', '2025-11-27', '2025-02-06');
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('USPS', '084309015', '2025-02-14', null);
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('USPS', '091902049', '2025-03-24', null);
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('UPS', '322280485', '2025-05-10', '2024-12-21');
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('UPS', '091803818', '2025-09-21', '2025-10-06');
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('UPS', '054001725', '2025-11-12', null);
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('USPS', '271070791', '2025-03-03', null);
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('UPS', '111909825', '2025-02-14', '2025-07-19');
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('USPS', '082903497', '2025-02-11', '2025-01-14');
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('FedEx', '053207766', '2025-02-18', '2025-09-19');
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('FedEx', '042206503', '2025-07-20', '2025-03-23');
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('FedEx', '082903536', '2025-01-02', null);
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('UPS', '111912197', '2025-04-14', null);
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('USPS', '072401048', '2025-06-30', '2025-09-14');
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('USPS', '121142850', '2025-01-07', '2025-01-05');
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('USPS', '063104668', '2025-04-03', '2024-12-31');
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('FedEx', '071923190', '2025-02-14', '2025-01-02');
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('UPS', '071925350', '2024-12-30', '2025-10-01');
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('FedEx', '082908560', '2025-10-25', '2024-12-22');
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('UPS', '081006201', '2025-05-04', '2024-12-04');
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('FedEx', '113114595', '2025-11-10', '2024-12-08');
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('UPS', '091400606', '2025-04-06', null);
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('FedEx', '044103523', '2025-11-17', '2025-08-04');
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('FedEx', '081206496', '2025-09-20', null);
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('FedEx', '081204281', '2025-06-29', null);
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('UPS', '061105232', '2025-10-17', '2024-12-07');
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('FedEx', '102103630', '2025-01-10', null);
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('UPS', '072412778', '2025-04-10', null);
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('USPS', '102101111', '2025-05-11', null);
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('FedEx', '113123625', '2025-06-06', null);
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('USPS', '101113935', '2025-03-19', null);
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('UPS', '031317636', '2024-12-20', '2025-08-27');
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('USPS', '125107079', '2025-10-28', null);
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('FedEx', '123103606', '2025-03-15', '2024-12-17');
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('FedEx', '081517693', '2025-05-04', null);
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('UPS', '061191848', '2025-07-26', '2025-04-09');
+insert into Shippings (Carrier, TrackingNum, DateShipped, DateArrived) values ('FedEx', '021409567', '2025-05-15', '2024-12-25');
+SELECT * FROM Shippings;
+
+-- INSERT ORDERS
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (19, 20, '2025-02-19 07:58:27', null);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (34, 39, '2025-07-07 17:09:11', null);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (38, 37, '2025-09-05 12:45:25', 24);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (30, 12, '2025-10-21 04:21:01', null);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (5, 17, '2024-12-09 15:55:35', null);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (7, 32, '2025-09-04 11:12:10', null);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (20, 31, '2025-08-22 12:31:24', null);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (13, 34, '2025-07-31 05:58:32', 1);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (10, 5, '2025-08-19 19:01:50', null);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (31, 27, '2025-01-12 11:46:27', 24);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (27, 22, '2025-11-01 02:09:36', 39);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (28, 27, '2025-06-13 20:56:44', null);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (21, 25, '2025-11-18 07:55:06', 36);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (37, 9, '2025-10-10 02:14:04', null);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (18, 8, '2025-08-31 22:18:28', 7);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (9, 23, '2025-03-18 04:06:18', 10);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (6, 14, '2025-10-27 13:04:25', null);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (32, 33, '2025-10-19 23:00:27', 31);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (18, 28, '2025-02-12 21:37:36', null);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (38, 31, '2025-06-10 16:54:11', 20);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (28, 14, '2025-04-30 12:25:51', 26);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (24, 13, '2025-08-29 08:27:20', 10);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (36, 38, '2025-01-24 00:21:47', 30);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (35, 19, '2025-08-04 07:59:49', null);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (26, 19, '2025-04-30 10:02:05', 15);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (10, 7, '2025-07-29 21:25:15', null);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (22, 36, '2025-02-18 14:42:53', 16);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (9, 24, '2025-03-02 11:48:24', null);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (17, 15, '2025-09-29 09:33:08', null);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (31, 16, '2024-12-26 04:54:04', 25);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (8, 33, '2025-07-22 17:57:32', 9);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (33, 5, '2025-08-05 09:47:41', null);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (8, 35, '2025-03-12 10:35:51', 30);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (22, 36, '2025-01-28 14:50:15', 10);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (12, 14, '2025-09-22 03:09:00', null);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (32, 30, '2025-07-30 17:27:00', 4);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (23, 19, '2024-12-15 01:58:36', 25);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (23, 16, '2025-01-04 22:53:58', 37);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (3, 37, '2025-09-10 06:51:50', 28);
+insert into Orders (GivenByID, ReceiverID, CreatedAt, ShippingId) values (24, 30, '2025-09-27 08:18:22', null);
+SELECT * FROM Orders;
+
+-- INSERT ORDER ITEMS
+insert into OrderItems (OrderID, ItemID) values (1, 1);
+insert into OrderItems (OrderID, ItemID) values (2, 2);
+insert into OrderItems (OrderID, ItemID) values (3, 3);
+insert into OrderItems (OrderID, ItemID) values (4, 4);
+insert into OrderItems (OrderID, ItemID) values (5, 5);
+insert into OrderItems (OrderID, ItemID) values (6, 6);
+insert into OrderItems (OrderID, ItemID) values (7, 7);
+insert into OrderItems (OrderID, ItemID) values (8, 8);
+insert into OrderItems (OrderID, ItemID) values (9, 9);
+insert into OrderItems (OrderID, ItemID) values (10, 10);
+insert into OrderItems (OrderID, ItemID) values (11, 11);
+insert into OrderItems (OrderID, ItemID) values (12, 12);
+insert into OrderItems (OrderID, ItemID) values (13, 13);
+insert into OrderItems (OrderID, ItemID) values (14, 14);
+insert into OrderItems (OrderID, ItemID) values (15, 15);
+insert into OrderItems (OrderID, ItemID) values (16, 16);
+insert into OrderItems (OrderID, ItemID) values (17, 17);
+insert into OrderItems (OrderID, ItemID) values (18, 18);
+insert into OrderItems (OrderID, ItemID) values (19, 19);
+insert into OrderItems (OrderID, ItemID) values (20, 20);
+insert into OrderItems (OrderID, ItemID) values (21, 21);
+insert into OrderItems (OrderID, ItemID) values (22, 22);
+insert into OrderItems (OrderID, ItemID) values (23, 23);
+insert into OrderItems (OrderID, ItemID) values (24, 24);
+insert into OrderItems (OrderID, ItemID) values (25, 25);
+insert into OrderItems (OrderID, ItemID) values (26, 26);
+insert into OrderItems (OrderID, ItemID) values (27, 27);
+insert into OrderItems (OrderID, ItemID) values (28, 28);
+insert into OrderItems (OrderID, ItemID) values (29, 29);
+insert into OrderItems (OrderID, ItemID) values (30, 30);
+SELECT * FROM OrderItems;
+
+-- INSERT FEEDBACK
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (11, 3, 'Not bad', '2025-05-16 06:31:13', 8);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (10, 5, 'Seller was very understanding and offered a refund', '2025-03-24 04:15:44', 31);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (6, 1, 'but still cute', '2024-12-22 06:05:15', 23);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (4, 1, 'need a replacement', '2025-01-17 09:48:26', 22);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (2, 3, 'need a replacement', '2025-03-09 18:56:52', 28);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (19, 4, 'exceeded my expectations!', '2024-12-05 18:08:46', 12);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (7, 5, 'Packaging was damaged during shipping', '2025-07-01 16:00:07', 35);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (4, 1, 'Item was exactly what I was looking for', '2025-06-13 14:03:55', 31);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (20, 2, 'Exactly what I was looking for', '2025-07-25 01:05:25', 22);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (14, 5, 'Item was exactly as pictured', '2025-04-09 17:37:49', 33);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (20, 2, 'very impressed', '2025-02-15 07:48:49', 20);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (11, 3, 'Item was exactly what I was looking for', '2025-08-15 22:32:51', 35);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (15, 2, 'very satisfied', '2025-06-21 18:40:59', 5);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (10, 1, 'not what I was expecting', '2025-03-25 18:14:51', 25);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (11, 2, 'pleasantly surprised', '2024-12-09 11:18:54', 34);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (14, 5, 'Item was damaged during shipping', '2024-12-29 07:09:14', 13);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (1, 2, 'Product was better than I expected', '2025-10-23 22:50:01', 19);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (16, 5, 'Item arrived damaged', '2025-08-08 03:47:13', 10);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (11, 5, 'A bit disappointed', '2025-03-21 05:48:31', 14);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (7, 1, 'very happy with my purchase', '2025-02-08 05:52:32', 26);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (12, 1, 'but could be better', '2025-05-08 03:20:49', 34);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (5, 1, 'misleading information', '2025-07-03 23:47:02', 31);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (7, 4, 'Seller was very helpful and responsive', '2024-12-17 09:04:44', 12);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (17, 2, 'Product was better than I expected', '2025-12-01 03:14:15', 6);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (1, 2, 'disappointed', '2025-11-15 18:34:48', 18);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (3, 5, 'Item was exactly as pictured', '2025-03-25 02:26:45', 39);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (6, 1, 'Item was exactly as pictured', '2025-01-20 17:41:02', 8);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (17, 1, 'Fast shipping', '2025-08-31 23:08:11', 29);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (8, 2, 'Item was exactly as pictured', '2025-03-02 01:58:08', 36);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (17, 2, 'disappointed', '2025-01-20 20:35:37', 17);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (9, 3, 'but still decent', '2025-09-23 22:07:39', 26);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (16, 4, 'Shipping took longer than expected', '2024-12-03 10:38:45', 26);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (12, 4, 'Quality could be improved', '2025-10-28 06:14:09', 14);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (20, 3, 'Product was better than I expected', '2025-07-05 02:16:36', 19);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (3, 3, 'Overall satisfied with my order', '2025-01-09 07:54:44', 39);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (3, 2, 'Item was damaged during shipping', '2025-02-04 19:37:01', 6);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (3, 3, 'but still usable', '2025-05-04 00:34:26', 30);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (19, 3, 'but it''ll do', '2025-10-18 09:49:28', 25);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (18, 5, 'but still cute', '2025-01-10 19:13:27', 22);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (8, 1, 'Item was damaged during shipping', '2025-11-17 14:31:04', 32);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (4, 3, 'Would buy from this seller again', '2025-04-13 18:58:20', 11);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (2, 3, 'Quality could be improved', '2025-10-24 04:22:30', 39);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (20, 5, 'Great product', '2025-08-26 12:18:02', 19);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (1, 3, 'Fast shipping', '2025-03-19 13:32:25', 29);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (2, 2, 'Exactly what I was looking for', '2025-05-13 06:56:13', 13);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (8, 3, 'very happy with my purchase', '2025-07-14 11:05:05', 34);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (19, 1, 'but it''ll do', '2025-08-05 11:52:33', 22);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (2, 1, 'disappointing', '2025-04-25 12:30:43', 11);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (7, 4, 'Overall satisfied with my order', '2025-01-12 02:18:06', 32);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (17, 2, 'but could be better', '2025-01-05 16:37:40', 34);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (8, 2, 'Item was missing a piece', '2025-06-22 18:05:42', 18);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (17, 5, 'Fast shipping', '2025-11-28 11:37:06', 8);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (4, 1, 'Good value for the price', '2025-08-16 07:22:41', 32);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (4, 2, 'but still nice', '2025-09-21 23:26:17', 5);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (10, 4, 'Item looks different from the photos', '2024-12-21 02:06:10', 6);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (19, 4, 'Seller was friendly and easy to work with', '2025-01-18 02:06:14', 22);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (2, 5, 'Item was damaged during shipping', '2025-10-20 15:01:40', 20);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (18, 2, 'Exactly as described', '2025-05-13 08:50:44', 21);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (18, 2, 'exceeded my expectations!', '2025-11-27 03:42:19', 28);
+insert into Feedback (OrderID, Rating, Comment, CreatedAt, CreatedByID) values (15, 2, 'great customer service', '2025-01-07 18:42:59', 11);
+SELECT * FROM Feedback;
\ No newline at end of file
diff --git a/database-files/ngo_db.sql b/database-files/ngo_db.sql
deleted file mode 100644
index 2c9bebe085..0000000000
--- a/database-files/ngo_db.sql
+++ /dev/null
@@ -1,71 +0,0 @@
-DROP DATABASE IF EXISTS ngo_db;
-CREATE DATABASE IF NOT EXISTS ngo_db;
-
-USE ngo_db;
-
-
-CREATE TABLE IF NOT EXISTS WorldNGOs (
- NGO_ID INT AUTO_INCREMENT PRIMARY KEY,
- Name VARCHAR(255) NOT NULL,
- Country VARCHAR(100) NOT NULL,
- Founding_Year INTEGER,
- Focus_Area VARCHAR(100),
- Website VARCHAR(255)
-);
-
-CREATE TABLE IF NOT EXISTS Projects (
- Project_ID INT AUTO_INCREMENT PRIMARY KEY,
- Project_Name VARCHAR(255) NOT NULL,
- Focus_Area VARCHAR(100),
- Budget DECIMAL(15, 2),
- NGO_ID INT,
- Start_Date DATE,
- End_Date DATE,
- FOREIGN KEY (NGO_ID) REFERENCES WorldNGOs(NGO_ID)
-);
-
-CREATE TABLE IF NOT EXISTS Donors (
- Donor_ID INT AUTO_INCREMENT PRIMARY KEY,
- Donor_Name VARCHAR(255) NOT NULL,
- Donor_Type ENUM('Individual', 'Organization') NOT NULL,
- Donation_Amount DECIMAL(15, 2),
- NGO_ID INT,
- FOREIGN KEY (NGO_ID) REFERENCES WorldNGOs(NGO_ID)
-);
-
-INSERT INTO WorldNGOs (Name, Country, Founding_Year, Focus_Area, Website)
-VALUES
-('World Wildlife Fund', 'United States', 1961, 'Environmental Conservation', 'https://www.worldwildlife.org'),
-('Doctors Without Borders', 'France', 1971, 'Medical Relief', 'https://www.msf.org'),
-('Oxfam International', 'United Kingdom', 1995, 'Poverty and Inequality', 'https://www.oxfam.org'),
-('Amnesty International', 'United Kingdom', 1961, 'Human Rights', 'https://www.amnesty.org'),
-('Save the Children', 'United States', 1919, 'Child Welfare', 'https://www.savethechildren.org'),
-('Greenpeace', 'Netherlands', 1971, 'Environmental Protection', 'https://www.greenpeace.org'),
-('International Red Cross', 'Switzerland', 1863, 'Humanitarian Aid', 'https://www.icrc.org'),
-('CARE International', 'Switzerland', 1945, 'Global Poverty', 'https://www.care-international.org'),
-('Habitat for Humanity', 'United States', 1976, 'Affordable Housing', 'https://www.habitat.org'),
-('Plan International', 'United Kingdom', 1937, 'Child Rights', 'https://plan-international.org');
-
-INSERT INTO Projects (Project_Name, Focus_Area, Budget, NGO_ID, Start_Date, End_Date)
-VALUES
-('Save the Amazon', 'Environmental Conservation', 5000000.00, 1, '2022-01-01', '2024-12-31'),
-('Emergency Medical Aid in Syria', 'Medical Relief', 3000000.00, 2, '2023-03-01', '2023-12-31'),
-('Education for All', 'Poverty and Inequality', 2000000.00, 3, '2021-06-01', '2025-05-31'),
-('Human Rights Advocacy in Asia', 'Human Rights', 1500000.00, 4, '2022-09-01', '2023-08-31'),
-('Child Nutrition Program', 'Child Welfare', 2500000.00, 5, '2022-01-01', '2024-01-01');
-
-INSERT INTO Donors (Donor_Name, Donor_Type, Donation_Amount, NGO_ID)
-VALUES
-('Bill & Melinda Gates Foundation', 'Organization', 10000000.00, 1),
-('Elon Musk', 'Individual', 5000000.00, 2),
-('Google.org', 'Organization', 2000000.00, 3),
-('Open Society Foundations', 'Organization', 3000000.00, 4),
-('Anonymous Philanthropist', 'Individual', 1000000.00, 5);
-
-CREATE TABLE model1_params (
- sequence_number INT,
- beta_vals TEXT
-);
-
-INSERT INTO model1_params (sequence_number, beta_vals) VALUES
-(1, '[0.25, 0.45, 0.67]');
\ No newline at end of file
diff --git a/docker-compose.yaml b/docker-compose.yml
similarity index 72%
rename from docker-compose.yaml
rename to docker-compose.yml
index 7dbddc70b9..e2d7dc7412 100644
--- a/docker-compose.yaml
+++ b/docker-compose.yml
@@ -1,32 +1,39 @@
-name: project-app-team-repo
+name: fithub
services:
app:
build: ./app
container_name: web-app
hostname: web-app
- volumes: ["./app/src:/appcode"]
+ volumes: ["./app/src:/app"]
environment:
- WATCHPACK_POLLING=true
ports:
- 8501:8501
+ depends_on:
+ - api
+
api:
build: ./api
container_name: web-api
hostname: web-api
+ # mapping on folder - insert into docker like harddrive
volumes: ["./api:/apicode"]
environment:
- WATCHPACK_POLLING=true
ports:
- 4000:4000
+ depends_on:
+ - db
db:
env_file:
- ./api/.env
- image: mysql:9
+ image: mysql:8.4
container_name: mysql_db
hostname: db
+ # NO command line needed!
volumes:
- "./database-files:/docker-entrypoint-initdb.d/:ro"
- "mysql_data:/var/lib/mysql"
@@ -34,4 +41,4 @@ services:
- 3200:3306
volumes:
- mysql_data:
+ mysql_data:
\ No newline at end of file
diff --git a/fithub.sql b/fithub.sql
new file mode 100644
index 0000000000..02d9dbbda3
--- /dev/null
+++ b/fithub.sql
@@ -0,0 +1,199 @@
+
+DROP DATABASE IF EXISTS fithub;
+CREATE DATABASE fithub;
+USE fithub;
+
+
+
+CREATE TABLE User (
+ UserID INT AUTO_INCREMENT PRIMARY KEY,
+ Name VARCHAR(100) NOT NULL,
+ Email VARCHAR(255) NOT NULL UNIQUE,
+ Phone VARCHAR(20) NOT NULL,
+ Address VARCHAR(255) NOT NULL,
+ DOB DATE NOT NULL,
+ Gender VARCHAR(20) NOT NULL,
+ IsActive BOOLEAN NOT NULL
+);
+
+
+CREATE TABLE Announcements (
+ AnnouncementID INT AUTO_INCREMENT PRIMARY KEY,
+ UserID INT NOT NULL,
+ Message TEXT NOT NULL,
+ AnnouncedAt DATETIME NOT NULL,
+ FOREIGN KEY (UserID) REFERENCES User(UserID)
+);
+
+
+CREATE TABLE Items (
+ ItemID INT AUTO_INCREMENT PRIMARY KEY,
+ Title VARCHAR(255) NOT NULL,
+ Category VARCHAR(100) NOT NULL,
+ Description TEXT NOT NULL,
+ Size VARCHAR(10) NOT NULL,
+ `Condition` VARCHAR(100) NOT NULL,
+ Availability VARCHAR(20) NOT NULL,
+ OwnerID INT NOT NULL,
+ ListedAt DATETIME NOT NULL,
+ FOREIGN KEY (OwnerID) REFERENCES User(UserID)
+);
+
+
+CREATE TABLE Reports (
+ ReportID INT AUTO_INCREMENT PRIMARY KEY,
+ note TEXT NOT NULL,
+ severity INT NOT NULL,
+ resolved BOOLEAN NOT NULL,
+ ReporterID INT NOT NULL,
+ ItemID INT NOT NULL,
+ FOREIGN KEY (ReporterID) REFERENCES User(UserID),
+ FOREIGN KEY (ItemID) REFERENCES Items(ItemID)
+);
+
+CREATE TABLE Images (
+ ImageID INT AUTO_INCREMENT PRIMARY KEY,
+ ItemID INT NOT NULL,
+ ImageURL TEXT NOT NULL,
+ ImageOrderNum INT NOT NULL,
+ FOREIGN KEY (ItemID) REFERENCES Items(ItemID)
+);
+
+
+CREATE TABLE Tags (
+ TagID INT AUTO_INCREMENT PRIMARY KEY,
+ Title VARCHAR(100) NOT NULL
+);
+
+
+CREATE TABLE ItemTags (
+ ItemID INT NOT NULL,
+ TagID INT NOT NULL,
+ PRIMARY KEY (ItemID, TagID),
+ FOREIGN KEY (ItemID) REFERENCES Items(ItemID),
+ FOREIGN KEY (TagID) REFERENCES Tags(TagID)
+);
+
+
+CREATE TABLE Orders (
+ OrderID INT AUTO_INCREMENT PRIMARY KEY,
+ SenderID INT NOT NULL,
+ ReceiverID INT NOT NULL,
+ ItemID INT NOT NULL,
+ CreatedAt DATETIME NOT NULL,
+ FOREIGN KEY (SenderID) REFERENCES User(UserID),
+ FOREIGN KEY (ReceiverID) REFERENCES User(UserID),
+ FOREIGN KEY (ItemID) REFERENCES Items(ItemID)
+);
+
+
+CREATE TABLE Shippings (
+ ShippingID INT AUTO_INCREMENT PRIMARY KEY,
+ OrderID INT NOT NULL,
+ Carrier VARCHAR(100) NOT NULL,
+ TrackingNum VARCHAR(255) NOT NULL,
+ DateShipped DATE NOT NULL,
+ DateArrived DATE NOT NULL,
+ FOREIGN KEY (OrderID) REFERENCES Orders(OrderID)
+);
+
+
+CREATE TABLE Feedback (
+ FeedbackID INT AUTO_INCREMENT PRIMARY KEY,
+ OrderID INT NOT NULL,
+ Rating INT NOT NULL,
+ Comment TEXT NOT NULL,
+ CreatedAt DATETIME NOT NULL,
+ FOREIGN KEY (OrderID) REFERENCES Orders(OrderID),
+ CHECK (Rating BETWEEN 1 AND 5)
+);
+
+
+-- Users
+INSERT INTO User(Name, Email, Phone, Address, DOB, Gender, IsActive)
+VALUES('Lena Park', 'lena@example.com', '5551112222','12 Willow Lane, Brooklyn, NY', '1998-06-15', 'Female', 1),
+('Marcus Lee', 'marcus@example.com', '5552223333','89 Cedar St, Seattle, WA', '1995-03-02', 'Male', 1),
+('Jade Alvarez', 'jade@example.com', '5553334444','301 Sunset Blvd, Los Angeles, CA', '2000-11-20', 'Female', 1);
+
+-- Announcements
+INSERT INTO Announcements(UserID, Message, AnnouncedAt)
+VALUES (1, 'Welcome to FitHub! List your pre-loved fits and swap with the community.', '2025-02-01 09:00:00'),
+ (2, 'Pro tip: Use aesthetic tags like Y2K, Coquette, or Streetwear so people can find your vibe.', '2025-02-02 15:30:00'),
+(3, 'Weekend challenge: Swap at least one item and leave feedback for your partner.', '2025-02-03 18:45:00');
+
+
+INSERT INTO Items(Title, Category, Description, Size, `Condition`,Availability, OwnerID, ListedAt)
+VALUES('Brandy Melville Baby Tee', 't-shirt','y2k white baby tee with tiny blue graphic, super cropped and super cute', 'S', 'Very good', 'swap', 1, '2025-02-04 11:00:00'),
+ ('Levi''s 501 Straight Jeans', 'jeans', 'vintage light wash levi''s 501 straight leg, perfect everyday denim','M', 'Good', 'trade', 2, '2025-02-04 13:20:00'),
+('Zara Oversized Hoodie', 'hoodie','charcoal gray oversized hoodie, cozy streetwear essential, fleece inside','L', 'Excellent', 'swap', 3, '2025-02-05 10:15:00'),
+('American Eagle Maxi Skirt', 'skirt','boho floral maxi skirt, soft fabric, elastic waist, very flowy', 'M', 'Good', 'claimed', 1, '2025-02-05 16:40:00');
+
+
+INSERT INTO Reports(note, severity, resolved, ReporterID, ItemID)
+VALUES
+('Small stain near hem that wasn''t mentioned, still wearable though.',1, 1, 2, 1),
+('Jeans arrived slightly more faded than pictured but still cute.',2, 0, 3, 2),
+('Hoodie had a loose thread on cuff, not a big deal.',1, 1, 1, 3);
+
+
+INSERT INTO Images
+(ItemID, ImageURL, ImageOrderNum)
+VALUES
+ (1, 'https://example.com/images/brandy_baby_tee_front.jpg', 1),
+(2, 'https://example.com/images/levis_501_full.jpg', 1),
+ (3, 'https://example.com/images/zara_hoodie_flatlay.jpg', 1),
+(4, 'https://example.com/images/ae_maxi_skirt_hanger.jpg', 1);
+
+
+INSERT INTO Tags
+(Title)
+VALUES
+('Y2K'),
+ ('Vintage'),
+('Clean Girl'),
+('Streetwear'),
+('Coquette'),
+('Basic');
+
+
+INSERT INTO ItemTags
+ (ItemID, TagID)
+VALUES
+ -- Brandy tee → Y2K, Coquette
+ (1, 1),
+ (1, 5),
+
+ -- Levi's jeans → Vintage, Streetwear
+ (2, 2),
+ (2, 4),
+
+ -- Zara hoodie → Streetwear, Basic
+ (3, 4),
+ (3, 6),
+
+ -- AE maxi skirt → Y2K, Clean Girl
+ (4, 1),
+ (4, 3);
+
+-- Orders (swaps/trades between users)
+INSERT INTO Orders(SenderID, ReceiverID, ItemID, CreatedAt)
+VALUES
+(2, 1, 2, '2025-02-06 12:00:00'),
+(1, 3, 1, '2025-02-06 14:30:00'),
+(3, 2, 3, '2025-02-07 09:45:00');
+
+-- Shippings (for each order)
+INSERT INTO Shippings (OrderID, Carrier, TrackingNum, DateShipped, DateArrived)
+VALUES
+(1, 'USPS', 'USPS9400111899223000000001', '2025-02-06', '2025-02-08'),
+(2, 'UPS', '1ZSWAP000000000001', '2025-02-06', '2025-02-09'),
+(3, 'FedEx','FEDEXTRADE123456789', '2025-02-07', '2025-02-09');
+
+-- Feedback (post-swap reviews)
+INSERT INTO Feedback
+ (OrderID, Rating, Comment, CreatedAt)
+VALUES
+(1, 5, 'Jeans fit perfectly, exactly the vintage vibe I wanted. Would swap again!', '2025-02-09 18:00:00'),
+(2, 4, 'Baby tee is so cute and very Y2K. Slightly more cropped than expected but still love it.', '2025-02-10 11:20:00'),
+ (3, 5, 'Hoodie is insanely soft, looks just like photos. Great communication too.',
+ '2025-02-10 20:45:00');
diff --git a/public/FitHubLogo+Tagline.png b/public/FitHubLogo+Tagline.png
new file mode 100644
index 0000000000..185cdce688
Binary files /dev/null and b/public/FitHubLogo+Tagline.png differ
diff --git a/public/FitHublogo.png b/public/FitHublogo.png
new file mode 100644
index 0000000000..1e235e3825
Binary files /dev/null and b/public/FitHublogo.png differ