diff --git a/database/README.MD b/database/README.MD index 8b13789..5a54340 100644 --- a/database/README.MD +++ b/database/README.MD @@ -1 +1,14 @@ +This script generates synthetic data for users and request tables. +How to run: + +1. Install dependencies: + pip install faker pandas + +2. Run script: + python generate_mock_data.py + +Output: + +- users.csv +- request.csv diff --git a/database/mock-data-generation/fix_foreign_keys.py b/database/mock-data-generation/fix_foreign_keys.py new file mode 100644 index 0000000..da023bd --- /dev/null +++ b/database/mock-data-generation/fix_foreign_keys.py @@ -0,0 +1,29 @@ +import pandas as pd +import random + +# Load generated CSVs +users_df = pd.read_csv("../mock_db/users.csv") +request_df = pd.read_csv("../mock_db/request.csv") +comments_df = pd.read_csv("../mock_db/request_comments.csv") +volunteers_df = pd.read_csv("../mock_db/volunteer_details.csv") +assigned_df = pd.read_csv("../mock_db/volunteers_assigned.csv") + +# Fix request table +request_df['req_user_id'] = request_df['req_user_id'].apply(lambda x: random.choice(users_df['user_id'])) +request_df.to_csv("../mock_db/request.csv", index=False) + +# Fix comments table +comments_df['req_id'] = comments_df['req_id'].apply(lambda x: random.choice(request_df['req_id'])) +comments_df['commenter_id'] = comments_df['commenter_id'].apply(lambda x: random.choice(users_df['user_id'])) +comments_df.to_csv("../mock_db/request_comments.csv", index=False) + +# Fix volunteer details table +volunteers_df['user_id'] = volunteers_df['user_id'].apply(lambda x: random.choice(users_df['user_id'])) +volunteers_df.to_csv("../mock_db/volunteer_details.csv", index=False) + +# Fix volunteer assignments +assigned_df['request_id'] = assigned_df['request_id'].apply(lambda x: random.choice(request_df['req_id'])) +assigned_df['volunteer_id'] = assigned_df['volunteer_id'].apply(lambda x: random.choice(volunteers_df['user_id'])) +assigned_df.to_csv("../mock_db/volunteers_assigned.csv", index=False) + +print("All foreign keys fixed successfully!") \ No newline at end of file diff --git a/database/mock-data-generation/generate_mock_data.py b/database/mock-data-generation/generate_mock_data.py index 2302c0a..0279049 100644 --- a/database/mock-data-generation/generate_mock_data.py +++ b/database/mock-data-generation/generate_mock_data.py @@ -1,26 +1,508 @@ +from faker import Faker +import pandas as pd +import random import os +import uuid +import json +from datetime import datetime, timedelta -from volunteer_applications import generate_volunteer_applications -from user_skills import generate_user_skills -from utils import set_seed, write_csv +fake = Faker() -OUTPUT_DIR = "output_csv_files" +# CONFIG +NUM_ROWS = 10000 +OUTPUT_DIR = "../mock_db" -def main() -> None: - set_seed(42) +os.makedirs(OUTPUT_DIR, exist_ok=True) + +# REFERENCE DATA (Matching your schema exactly) +# Countries (country_id is INTEGER per schema) +COUNTRIES = { + 1: {"name": "United States", "code": "US", "phone_code": "+1"}, + 2: {"name": "Canada", "code": "CA", "phone_code": "+1"}, + 3: {"name": "United Kingdom", "code": "UK", "phone_code": "+44"} +} + +# States (state_id is VARCHAR(50) per schema, links to country_id INTEGER) +STATES = { + # US States (country_id = 1) + "US-NY": {"name": "New York", "country_id": 1, "state_code": "NY"}, + "US-CA": {"name": "California", "country_id": 1, "state_code": "CA"}, + "US-TX": {"name": "Texas", "country_id": 1, "state_code": "TX"}, + "US-FL": {"name": "Florida", "country_id": 1, "state_code": "FL"}, + + # Canada (country_id = 2) + "CA-ON": {"name": "Ontario", "country_id": 2, "state_code": "ON"}, + "CA-BC": {"name": "British Columbia", "country_id": 2, "state_code": "BC"}, + + # UK (country_id = 3) + "UK-ENG": {"name": "England", "country_id": 3, "state_code": "ENG"}, + "UK-SCT": {"name": "Scotland", "country_id": 3, "state_code": "SCT"}, +} + +# Build reverse mapping: country_id -> list of valid state_ids (strings) +COUNTRY_TO_STATES = {} +for state_id, state_info in STATES.items(): + cid = state_info["country_id"] + if cid not in COUNTRY_TO_STATES: + COUNTRY_TO_STATES[cid] = [] + COUNTRY_TO_STATES[cid].append(state_id) + +# User Status (user_status_id is BIGINT per schema) +USER_STATUSES = { + 1: "Active", + 2: "Inactive", + 3: "Pending", + 4: "Suspended" +} + +# User Category (user_category_id is INTEGER per schema) +USER_CATEGORIES = { + 1: "Requester", + 2: "Volunteer", + 3: "Both", + 4: "Admin" +} + +# Request Categories (cat_id is VARCHAR(50) per schema) +REQUEST_CATEGORIES = { + "ELDERLY_CARE": "Elderly Care", + "CHILDCARE": "Childcare", + "HOME_REPAIR": "Home Repair", + "TUTORING": "Education/Tutoring", + "EMERGENCY": "Emergency/Disaster", + "TRANSPORT": "Transportation", + "MEAL_PREP": "Meal Preparation", + "TECH_HELP": "Technology Help" +} + +# Request Templates (realistic content) +REQUEST_TEMPLATES = { + "ELDERLY_CARE": { + "subjects": [ + "Need assistance with grocery shopping", + "Help required for medical appointment transport", + "Looking for companion for daily walks", + "Assistance needed with meal preparation", + "Help with medication reminders" + ], + "descriptions": [ + "Elderly person needs help buying groceries twice a week. Lives alone and has mobility issues.", + "Need reliable transport to and from hospital for chemotherapy sessions every Friday.", + "85-year-old looking for someone to walk with in the park for 30 minutes daily.", + "Requires help preparing lunch and dinner due to arthritis in hands.", + "Needs someone to help organize weekly pills and set reminders." + ] + }, + "CHILDCARE": { + "subjects": [ + "Emergency babysitting needed for 2 children", + "After-school pickup and homework help", + "Weekend childcare while parent works", + "Special needs child requires respite care", + "Temporary foster care support" + ], + "descriptions": [ + "Single parent working night shift needs emergency care for ages 4 and 7.", + "Need pickup from Lincoln Elementary at 3pm and help with math homework.", + "Working weekends, need childcare Saturday-Sunday 8am-6pm for toddler.", + "Autistic child needs experienced caregiver for 4 hours on Saturdays.", + "Supporting foster family with temporary relief care for infant." + ] + }, + "HOME_REPAIR": { + "subjects": [ + "Wheelchair ramp installation needed", + "Plumbing repair for leaky faucet", + "Garden maintenance for senior citizen", + "Snow removal service needed", + "Electrical outlet repair" + ], + "descriptions": [ + "Veteran with mobility issues needs wooden ramp built for front entrance.", + "Kitchen sink dripping constantly, cannot afford professional plumber.", + "Elderly couple cannot maintain large backyard, need monthly mowing.", + "Senior unable to shovel driveway, need help after snowstorms.", + "Living room outlet sparking, safety concern for family with kids." + ] + }, + "TUTORING": { + "subjects": [ + "Math tutor needed for high school student", + "ESL conversation practice partner", + "Computer literacy training for seniors", + "Reading buddy for elementary child", + "SAT prep tutor required" + ], + "descriptions": [ + "10th grader struggling with algebra 2, needs twice weekly tutoring.", + "Recent immigrant wants to practice English conversation 2 hours weekly.", + "Retiree wants to learn email and video calls to connect with grandchildren.", + "2nd grader reading below grade level, needs patient helper after school.", + "Junior needs help with SAT math and verbal sections, aiming for 1300+." + ] + }, + "EMERGENCY": { + "subjects": [ + "Temporary housing after house fire", + "Food and supplies after flooding", + "Emotional support after natural disaster", + "Debris cleanup assistance", + "Emergency pet sheltering" + ], + "descriptions": [ + "Family of 4 lost home in fire, need temporary accommodation for 2 weeks.", + "Basement flooded, lost food supplies, need non-perishables and water.", + "Anxious after tornado, need counselor or support group recommendations.", + "Elderly unable to clear fallen trees from yard after storm.", + "Evacuated due to hurricane, need temporary foster for 2 cats and dog." + ] + }, + "TRANSPORT": { + "subjects": [ + "Ride needed to doctor appointment", + "Transportation for wheelchair-bound senior", + "Airport pickup for elderly visitor", + "Grocery store transportation weekly", + "Pharmacy pickup service needed" + ], + "descriptions": [ + "Need ride to Dr. Smith's office downtown, wheelchair accessible vehicle required.", + "Elderly woman needs regular transport to physical therapy sessions.", + "Picking up 80-year-old aunt from airport, needs assistance with luggage.", + "Weekly trip to supermarket, can no longer drive due to vision issues.", + "Need someone to pick up prescriptions from CVS twice a month." + ] + }, + "MEAL_PREP": { + "subjects": [ + "Meal prep for diabetic senior", + "Cooking assistance for disabled veteran", + "Healthy meal delivery needed", + "Help with special diet preparation", + "Batch cooking for busy family" + ], + "descriptions": [ + "Need help preparing low-sugar meals for Type 2 diabetic, 5 days a week.", + "Veteran with PTSD needs assistance cooking, prefers simple recipes.", + "Elderly couple needs nutritious meals delivered due to mobility issues.", + "Celiac disease requires strict gluten-free meal preparation help.", + "Working single mom needs help batch cooking for the week on Sundays." + ] + }, + "TECH_HELP": { + "subjects": [ + "Smartphone setup for senior", + "Computer virus removal help", + "WiFi setup assistance", + "Video calling setup for family", + "Online banking security help" + ], + "descriptions": [ + "75-year-old needs help setting up new iPhone and understanding apps.", + "Laptop running slow, suspect malware, need tech-savvy volunteer.", + "New router installed, need help connecting all devices in the house.", + "Want to FaceTime with grandchildren, need setup and tutorial.", + "Concerned about online banking security, need guidance on best practices." + ] + } +} + +# Request Status (req_status_id is INTEGER per schema) +REQUEST_STATUSES = { + 1: "Open", + 2: "Assigned", + 3: "In Progress", + 4: "Completed", + 5: "Cancelled" +} + +# Request Priority (req_priority_id is INTEGER per schema) +REQUEST_PRIORITIES = { + 1: "Low", + 2: "Medium", + 3: "High", + 4: "Urgent" +} + +# Request Type (req_type_id is INTEGER per schema) +REQUEST_TYPES = { + 1: "One-time", + 2: "Recurring", + 3: "Emergency" +} + +# Request For (req_for_id is INTEGER per schema) +REQUEST_FOR = { + 1: "Self", + 2: "Family Member", + 3: "Friend", + 4: "Neighbor", + 5: "Client" +} + +# Is Lead Volunteer (req_islead_id is INTEGER per schema) +LEAD_VOLUNTEER_OPTS = { + 1: "Yes - Lead Volunteer", + 2: "No - Support Volunteer", + 3: "Not Assigned Yet" +} + +# HELPER FUNCTIONS + +def generate_uuid(): + """Generate UUID string for IDs""" + return str(uuid.uuid4()) + +def get_state_for_country(country_id): + """Get valid state_id for given country_id""" + valid_states = COUNTRY_TO_STATES.get(country_id, []) + return random.choice(valid_states) if valid_states else None + +def get_realistic_request(cat_id): + """Get realistic subject and description for category""" + templates = REQUEST_TEMPLATES.get(cat_id, REQUEST_TEMPLATES["ELDERLY_CARE"]) + idx = random.randint(0, len(templates["subjects"]) - 1) + return templates["subjects"][idx], templates["descriptions"][idx] + +# GENERATE USERS (All 26 columns per schema) + +print("Generating users...") +users = [] +used_emails = set() +user_ids = [] # Store for FK references + +for i in range(NUM_ROWS): + user_id = generate_uuid() + user_ids.append(user_id) + + # Consistent country-state relationship + country_id = random.choice(list(COUNTRIES.keys())) + state_id = get_state_for_country(country_id) + state_info = STATES.get(state_id, {}) + + # Generate unique email + email = fake.email() + while email in used_emails: + email = fake.email() + used_emails.add(email) + + # Generate name parts + first_name = fake.first_name() + last_name = fake.last_name() + middle_name = fake.first_name() if random.random() > 0.5 else None + + users.append({ + "user_id": user_id, + "state_id": state_id, + "country_id": country_id, + "user_status_id": random.choice(list(USER_STATUSES.keys())), + "user_category_id": random.choice(list(USER_CATEGORIES.keys())), + "full_name": f"{first_name} {last_name}", + "first_name": first_name, + "middle_name": middle_name, + "last_name": last_name, + "primary_email_address": email, + "primary_phone_number": fake.phone_number()[:20], + "addr_ln1": fake.street_address(), + "addr_ln2": fake.secondary_address() if random.random() > 0.7 else None, + "addr_ln3": None, + "city_name": fake.city(), + "zip_code": fake.zipcode(), + "last_location": f"{fake.latitude()}, {fake.longitude()}", + "last_update_date": fake.date_time_between(start_date="-1y", end_date="now"), + "time_zone": random.choice(["America/New_York", "America/Chicago", "America/Denver", "America/Los_Angeles", "Europe/London"]), + "profile_picture_path": f"/uploads/profiles/{user_id}.jpg" if random.random() > 0.3 else None, + "gender": random.choice(["Male", "Female", "Non-Binary", None]), + "language_1": random.choice(["English", "Spanish", "French", "Mandarin", "Hindi"]), + "language_2": random.choice([None, "Spanish", "French", "German", "Mandarin"]), + "language_3": None, + "promotion_wizard_stage": random.randint(0, 5) if random.random() > 0.5 else None, + "promotion_wizard_last_update_date": fake.date_time_between(start_date="-6m", end_date="now") if random.random() > 0.5 else None, + "external_auth_provider": random.choice([None, "google", "facebook", "apple"]), + "dob": fake.date_of_birth(minimum_age=18, maximum_age=85) + }) + +users_df = pd.DataFrame(users) + +# GENERATE REQUESTS (All columns per schema) + +print("Generating requests...") +requests_list = [] +request_ids = [] + +for i in range(NUM_ROWS): + req_id = generate_uuid() + request_ids.append(req_id) - # create folder if it doesn't exist - os.makedirs(OUTPUT_DIR, exist_ok=True) + # Get realistic content based on category + cat_id = random.choice(list(REQUEST_CATEGORIES.keys())) + subject, description = get_realistic_request(cat_id) + + # Truncate to match schema limits + subject = subject[:125] # req_subj is VARCHAR(125) + description = description[:255] # req_desc is VARCHAR(255) + + requests_list.append({ + "req_id": req_id, + "req_user_id": random.choice(user_ids), + "req_for_id": random.choice(list(REQUEST_FOR.keys())), + "req_islead_id": random.choice(list(LEAD_VOLUNTEER_OPTS.keys())), + "req_cat_id": cat_id, + "req_type_id": random.choice(list(REQUEST_TYPES.keys())), + "req_priority_id": random.choice(list(REQUEST_PRIORITIES.keys())), + "req_status_id": random.choice(list(REQUEST_STATUSES.keys())), + "req_loc": fake.city()[:125], + "iscalamity": random.choice([True, False]), + "req_subj": subject, + "req_desc": description, + "req_doc_link": fake.url() if random.random() > 0.8 else None, + "audio_req_desc": None, + "submission_date": fake.date_time_between(start_date="-1y", end_date="now"), + "serviced_date": fake.date_time_between(start_date="-6m", end_date="now") if random.random() > 0.6 else None, + "last_update_date": fake.date_time_between(start_date="-6m", end_date="now"), + "to_public": random.choice([True, True, True, False]) # 75% public + }) + +request_df = pd.DataFrame(requests_list) + + +# GENERATE VOLUNTEER DETAILS(All columns per schema, with realistic availability JSON) + +print("Generating volunteer details...") +volunteers = [] +volunteer_user_ids = [] + +# Select subset of users to be volunteers (70% of users) +volunteer_candidates = random.sample(user_ids, int(len(user_ids) * 0.7)) + +for user_id in volunteer_candidates: + volunteer_user_ids.append(user_id) + + # Generate availability JSON + availability_days = random.sample(["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], + random.randint(2, 5)) + availability_times = { + "morning": random.choice([True, False]), + "afternoon": random.choice([True, False]), + "evening": random.choice([True, False]), + "weekend": random.choice([True, False]) + } + + +# GENERATE VOLUNTEER DETAILS(All columns per schema, with realistic availability JSON) + + +print("Generating volunteer details...") +volunteers = [] +volunteer_user_ids = [] + +# Select subset of users to be volunteers (70% of users) +volunteer_candidates = random.sample(user_ids, int(len(user_ids) * 0.7)) + +for user_id in volunteer_candidates: + volunteer_user_ids.append(user_id) + + # Generate availability JSON + availability_days = random.sample(["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], + random.randint(2, 5)) + availability_times = { + "morning": random.choice([True, False]), + "afternoon": random.choice([True, False]), + "evening": random.choice([True, False]), + "weekend": random.choice([True, False]) + } + + volunteers.append({ + "user_id": user_id, + "terms_and_conditions": True, + "terms_accepted_at": fake.date_time_between(start_date="-1y", end_date="-6m"), + "govt_id_path1": f"/uploads/ids/{user_id}_id1.jpg" if random.random() > 0.3 else None, + "govt_id_path2": None, + "path1_updated_at": fake.date_time_between(start_date="-1y", end_date="now") if random.random() > 0.3 else None, + "path2_updated_at": None, + "availability_days": json.dumps(availability_days), + "availability_times": json.dumps(availability_times), + "created_at": fake.date_time_between(start_date="-1y", end_date="-6m"), + "last_updated_at": fake.date_time_between(start_date="-6m", end_date="now") + }) + +volunteers_df = pd.DataFrame(volunteers) + +# GENERATE VOLUNTEERS ASSIGNED (All columns per schema, with realistic FK references to requests and volunteers) + + +print("Generating volunteer assignments...") +assignments = [] + +for i in range(NUM_ROWS): + if len(volunteer_user_ids) == 0 or len(request_ids) == 0: + break + + assignments.append({ + "volunteers_assigned_id": i + 1, + "request_id": random.choice(request_ids), + "volunteer_id": random.choice(volunteer_user_ids), + "volunteer_type": random.choice(["Primary", "Secondary", "Backup"]), + "last_update_date": fake.date_time_between(start_date="-6m", end_date="now") + }) + +assignments_df = pd.DataFrame(assignments) + + +# GENERATE REQUEST COMMENTS (All columns per schema, with realistic FK references to requests and users, and realistic comment content) + +print("Generating comments...") +comments = [] + +comment_templates = [ + "I can help with this request. Available tomorrow afternoon.", + "Contacted the requester, waiting for response on specific location.", + "Completed the task. Very rewarding experience working with this family!", + "Need more information about the best time to visit.", + "Unable to fulfill due to scheduling conflict this week.", + "Thank you so much for your help! Really appreciated by the whole family.", + "Is this still needed? I can assist next week if so.", + "Assigned volunteer to this request. Status updated to In Progress.", + "Follow-up: How did everything go with the service?", + "Updated status to Completed. Great work everyone!", + "Running 15 minutes late due to traffic.", + "Brought extra supplies as requested. Ready to help!", + "First time volunteering, very nervous but excited to help!", + "Have experience with similar cases, confident I can assist.", + "Requester was very grateful for the quick response." +] + +for i in range(NUM_ROWS): + if len(request_ids) == 0 or len(user_ids) == 0: + break + + comments.append({ + "comment_id": i + 1, + "req_id": random.choice(request_ids), + "commenter_id": random.choice(user_ids), + "comment_desc": random.choice(comment_templates), + "created_at": fake.date_time_between(start_date="-6m", end_date="now"), + "last_updated_at": fake.date_time_between(start_date="-6m", end_date="now"), + "isdeleted": random.choice([True, False, False, False, False]) # 20% deleted + }) - volunteer_rows = generate_volunteer_applications(count=100) - user_skill_rows = generate_user_skills(volunteer_rows) +comments_df = pd.DataFrame(comments) - write_csv(f"{OUTPUT_DIR}/volunteer_applications.csv", volunteer_rows) - write_csv(f"{OUTPUT_DIR}/user_skills.csv", user_skill_rows) +# SAVE ALL FILES - print(f"Generated {len(volunteer_rows)} volunteer_applications rows") - print(f"Generated {len(user_skill_rows)} user_skills rows") +print("Saving CSV files...") +users_df.to_csv(f"{OUTPUT_DIR}/users.csv", index=False) +request_df.to_csv(f"{OUTPUT_DIR}/request.csv", index=False) +volunteers_df.to_csv(f"{OUTPUT_DIR}/volunteer_details.csv", index=False) +assignments_df.to_csv(f"{OUTPUT_DIR}/volunteers_assigned.csv", index=False) +comments_df.to_csv(f"{OUTPUT_DIR}/request_comments.csv", index=False) -if __name__ == "__main__": - main() +print(f"\n Successfully generated {NUM_ROWS} rows per table!") +print(f" Files saved to: {OUTPUT_DIR}/") +print(f"\n Data Quality Checks:") +print(f" • All user_ids are UUID strings (not integers)") +print(f" • State codes are strings like 'US-NY', 'CA-ON' (not 1-5)") +print(f" • Country-State relationships are consistent (NY only in US)") +print(f" • Request subjects/descriptions are realistic and contextual") +print(f" • Foreign keys reference valid existing IDs") \ No newline at end of file diff --git a/database/mock_db/README.md b/database/mock_db/README.md new file mode 100644 index 0000000..e69de29 diff --git a/database/mock_db/request.csv b/database/mock_db/request.csv new file mode 100644 index 0000000..0414c5a --- /dev/null +++ b/database/mock_db/request.csv @@ -0,0 +1,106 @@ +request_id,req_user_id,req_title,req_description,req_cat_id,req_priority_id,req_status_id +1,17,Level alone lot respond what answer.,Continue garden decade strong soon. See new affect interview.,1,2,2 +2,81,Personal fill poor from be.,Politics grow continue sister. True place no performance group call military.,1,3,3 +3,98,Him data market.,Produce join contain as. Civil meet off movement power. Various nice choose determine concern most.,5,1,2 +4,8,Especially stuff call along term.,Reduce onto source community. Against act mention song.,4,2,2 +5,80,Relate impact card news.,I town increase rise arrive. Tax relationship again make thus.,3,3,1 +6,83,Specific as leave something.,Throw need old later center hand. Fill administration decade build.,2,3,2 +7,98,Blue community then simple.,Stop simple shake organization summer throw. Reflect program open final under loss.,3,3,1 +8,84,Everything be similar least century.,Develop sometimes collection term true left than. Best rise recognize quite stay develop.,1,3,1 +9,93,Rise hope baby.,Word big whole phone impact teacher. According open city sit within likely.,1,3,1 +10,4,School person note thing system candidate word.,Yeah upon life generation international about. Media film season week budget off seat.,1,3,2 +11,82,Couple growth vote.,Fine weight peace end just. Player well third door red media.,5,1,2 +12,91,Be read only.,Letter care push assume simple. Fly evening herself stage if.,1,2,2 +13,80,North result worry affect police a.,Without grow upon exist picture reality. Through democratic well growth. Value part near ready all.,3,3,2 +14,42,Factor last perhaps hot.,If quickly agree edge. Until some manage none year administration many.,2,1,2 +15,41,First dog suddenly business.,Then finish specific probably. Partner have its month.,1,3,2 +16,82,Television true respond ever.,Kitchen word mind compare avoid performance by. Rest reason kid.,1,2,2 +17,32,Prove arrive with.,Word campaign person from leg growth. After executive each me top.,5,1,3 +18,83,Somebody sea idea friend sea serve.,"Pay view whole go. Not a fill everyone. +Buy great despite price month base miss.",5,2,3 +19,77,Major fall although television some.,Share forward realize design chance accept these. Room me add debate many.,2,1,2 +20,35,Kind stock then know weight.,Above age would cultural economic your rise production.,1,2,2 +21,86,Service without professor talk deep.,Fight here real various. Child heart simple network different.,5,3,3 +22,20,Sing manage purpose eye.,"Approach wait ball fire. Board note season test step. +Play beautiful realize figure old.",3,3,1 +23,45,Day finish hour memory.,Bring simply fine go first red activity.,3,1,3 +24,50,Dog ask go board.,Mention manager than fall. Provide this adult term. Rich site few have minute pass.,3,1,3 +25,69,Five peace light.,Expert however truth so truth newspaper. Total voice expect budget hard.,3,1,1 +26,74,Everybody site top series.,"Walk go a entire relate business citizen. +Listen realize week marriage. Economic class power.",1,3,2 +27,34,Program ten hard enough.,Know leader onto. Challenge know suggest anyone. Big official nearly worry.,3,2,2 +28,33,First still recognize reveal hotel.,Want want same beat under meet recently. Campaign turn yes. Hope make purpose heart.,4,2,2 +29,52,Expert note yes knowledge least structure.,Across occur whom right those throughout. Now compare store.,3,2,2 +30,95,Reason case remember former similar.,Toward property stop resource culture. Word him its pretty main instead although keep.,3,2,1 +31,11,Determine start easy those.,Shake large remain attorney second. Its perform lawyer health.,2,1,2 +32,11,How deal large fire them.,Increase exist dog along. News help top however list. Seven none enjoy political take deal far.,2,3,2 +33,66,Skin old teach southern position.,Whether upon sort same put decision very. Skin trouble technology.,1,1,2 +34,87,Somebody up three despite book affect.,Job court almost lot help book information. Evidence feel watch song let.,1,1,2 +35,5,Black moment first.,Brother play western huge experience consider college.,4,3,2 +36,30,National voice finish loss necessary.,Energy almost skin second behind.,3,2,2 +37,93,Peace trip itself dinner doctor outside.,Cause others race tend. Provide apply structure analysis. What speech front century else military.,5,3,3 +38,92,Carry foreign or call hold lay.,Others fine game relate. Sure discussion allow month marriage.,5,1,1 +39,39,Item woman deep society strategy.,My notice box forward reflect. Way soon so recent worry series.,5,1,2 +40,58,Student marriage sure word but.,Day news daughter market. Few practice five well.,1,2,1 +41,17,Box strong itself dream benefit.,Watch health difference PM. Build and eight beat public deal let.,3,3,2 +42,17,According stand speak specific.,Floor affect thank song reflect. Hair small word few process involve.,2,3,1 +43,36,Little maintain question.,"Play act none public. Prove guy from image. +Ask affect authority night easy.",3,1,2 +44,14,Mention soon sit guy ever.,In participant answer themselves exist. Race push main memory get room possible drive.,5,2,2 +45,37,Style else he we stage.,Imagine involve safe necessary TV just. Color door little drop wrong.,3,1,3 +46,34,Picture apply situation rather give social.,Near nearly standard evidence Mr important former dog.,4,2,2 +47,7,Notice owner food role.,Center Congress loss.,3,2,1 +48,88,Herself already water high car.,Large student receive course consumer. Owner major military into the.,5,1,2 +49,12,Type else blue.,Hear have thought although. Century store choice show do special subject.,2,1,1 +50,36,Purpose job table dream.,Watch you real benefit former. Computer station peace area newspaper.,3,1,3 +51,56,Visit wish upon investment.,Instead fine arrive cultural. Budget actually ago relate law.,4,3,1 +52,32,Five rather environmental.,Result of environment. Nice ground cause require entire power.,3,2,3 +53,39,Prevent pretty enough.,Likely candidate support behavior nice describe nation. Toward call station out approach.,5,2,2 +54,11,Only consumer friend hospital.,Sit authority any arrive decade. Feeling letter suggest father environment.,2,1,3 +55,71,Agree family military area.,Six them support truth usually. Wear catch really heavy who relate water.,2,2,1 +56,44,Dark myself these.,Check just project company issue. Government road movie perhaps.,5,3,3 +57,14,International economy involve thought.,Ground chance answer partner. Unit see share. Star stand girl get others pretty defense.,2,3,2 +58,99,Follow never share quite low.,Of risk hold address among. Want product finish keep customer. Let east two concern so born impact.,2,1,1 +59,24,Recognize authority account door.,Voice agent suffer.,4,1,2 +60,6,Thing third thought look.,Watch generation pattern.,5,1,1 +61,79,Property himself large.,Enter themselves talk pass economic few. Present mean north indicate.,3,1,1 +62,1,White major really.,Several situation middle reach type good section. Black security know.,3,1,2 +63,71,Character already worker next.,Wear process now without program water hotel. First card assume will around red.,4,1,3 +64,68,Hear with real remain.,Finish wide my avoid make main. Drive ability operation citizen. Out available stock understand.,2,2,1 +65,16,Find sister speech.,Far lawyer off far fish. Could improve well decision strong red rock.,5,1,2 +66,16,Will policy company.,Case bank onto she person. Issue choose you ten that about book. Notice former wrong training.,4,1,2 +67,57,Heart south behavior spend.,Catch wrong seven yes phone.,4,2,3 +68,78,Despite those about attention necessary.,Rock join must whether later. Ok nor notice under.,2,1,1 +69,19,Specific media choice.,About produce rate public. Often door power determine.,2,2,3 +70,37,Statement anyone as choice agreement establish.,Development city chance notice bit beat say.,1,3,3 +71,53,Direction identify structure senior central early.,Social discussion building speech up cell. Draw want front.,4,3,2 +72,28,Or military Congress week perhaps.,Product reason page race. People reason boy rock note. Yet real idea owner tree lose total.,2,2,3 +73,1,Candidate live garden statement.,Usually last color discussion until. None claim use hope look rest trip.,5,2,2 +74,46,Teach left where your.,Chair second responsibility close sister today Democrat.,3,2,3 +75,3,Enter worry particular deep wonder.,Watch voice history role again. Very share that other whom interview notice that.,3,2,2 +76,29,Kind reflect economic.,Law story job building quickly town later. Later cover talk. Enough large month exist.,1,1,3 +77,53,Answer knowledge speak election marriage.,Chance leg instead industry policy. Upon could purpose rest wrong rest read.,3,2,1 +78,25,Growth serve mission.,Production gas how we the. Put behavior building why. Serious color here month property.,5,2,1 +79,65,Alone voice government dream.,Task try old. Section team development more.,1,2,2 +80,95,Receive your light away share size.,Heavy smile really century.,3,1,1 +81,78,Above quite chance.,Try figure summer discussion. Involve seat four lose true national.,3,2,1 +82,54,Ground season brother.,Perhaps collection authority magazine high rather seven. Represent voice theory value change miss.,1,2,3 +83,95,Leg health option.,Detail we watch sound why.,3,1,1 +84,28,Second improve leg land.,Fire away itself. Wide drug fight themselves.,5,1,2 +85,65,Design trouble help air.,Nature media beautiful require. Yard world add cup.,5,3,2 +86,61,Situation ever hard rest meeting structure.,Public statement contain amount growth assume finally. Instead admit security soon ever on.,5,2,2 +87,9,Official young politics need system.,Resource join seek rate. Board share require want. People team figure indeed final on school.,5,2,3 +88,97,Inside month along threat relationship.,Theory once manager everybody million. Resource full marriage reflect respond area parent bar.,4,1,2 +89,5,Design seem candidate rate.,Coach little report past identify form party.,5,3,2 +90,64,Color avoid blood responsibility next course.,"Politics case possible kid. Unit term miss explain. +Democratic man movie level.",2,1,3 +91,62,Join program great join girl break.,Why science cut summer phone share what. Kind garden single item. Teach world sort skin.,3,1,2 +92,69,Scientist scene pick election inside.,These always look pressure. Number lot much consider culture offer.,1,2,1 +93,53,Age hundred class.,Deep free suggest. Although add especially affect single throughout. During improve building.,4,1,2 +94,81,Any exist determine member.,Peace state whatever thought white like its. Few game friend history. End war about.,4,2,2 +95,14,Best evidence cup no decide concern.,Stay almost wife eight.,4,2,2 +96,96,Large police federal ball also American.,Every see rich information tough season. Range operation line much front. Why computer indeed.,5,2,2 +97,58,Entire along child.,Agent always speech imagine. Really create water them once summer.,5,1,3 +98,30,Write just need pay.,City part school head approach dog message. Month front carry new say deal spring.,3,2,2 +99,68,The story enter program fall.,Time food edge identify like.,5,2,1 +100,33,Expert oil within.,Above tough artist garden mission the great. Unit old over environmental president bank suddenly.,1,2,2 diff --git a/database/mock_db/request_comments.csv b/database/mock_db/request_comments.csv new file mode 100644 index 0000000..c4f345b --- /dev/null +++ b/database/mock_db/request_comments.csv @@ -0,0 +1,101 @@ +comment_id,request_id,user_id,comment +1,68,28,Memory company capital something water standard nice particularly. +2,39,90,Certainly prevent school face prove key particularly organization. +3,26,48,Section degree quite time. +4,7,13,Performance item body style move report enough. +5,6,46,They price ok. +6,38,26,Matter stay late through can organization. +7,60,94,Brother look impact production until two evening. +8,53,18,Without authority win rather talk skin. +9,4,17,Long similar season beyond his. +10,10,64,Machine threat whether picture report employee sure total. +11,90,9,Through health fear fight beyond account particular. +12,52,19,Happy degree order remember expect similar put rise. +13,37,11,Letter agency simply can toward. +14,78,63,Indicate want pretty but size sign something north. +15,71,82,Board positive to put age million. +16,15,93,See she doctor special contain class. +17,57,98,Sell land eye soldier. +18,65,59,My always painting side foot much surface. +19,21,84,Method believe most address song later want. +20,30,59,Give option talk need blue. +21,32,42,Table friend rather once down sport people success. +22,96,86,Condition able even bit other when. +23,4,11,Father address improve character likely station travel. +24,87,75,Shoulder know next voice. +25,89,46,Beyond after after position course life. +26,25,52,Fear ahead film turn answer sometimes involve. +27,26,8,Event maintain begin. +28,83,44,Call tree white rock fly. +29,100,7,Field rock medical lay theory everything. +30,94,25,Deep town first east school there still. +31,21,100,True industry season possible free. +32,54,100,Political often commercial customer represent general concern range. +33,41,24,A prove speech drug. +34,81,91,Century body senior dream maybe manage. +35,67,47,Poor I sister certain recognize room Congress pressure. +36,47,65,Official fast put activity. +37,7,85,Public buy little evidence technology cut. +38,83,48,Impact professional affect common but support mind. +39,31,29,Responsibility task fight field. +40,45,54,Property individual property. +41,69,79,Heavy home ever series now. +42,94,21,Experience nature this many determine score protect audience. +43,40,26,Once statement hit include television. +44,78,98,Team firm expert control light Congress. +45,66,31,While style road eight set than. +46,20,78,Compare leg material quite try. +47,58,4,Us performance vote sure down firm hospital. +48,36,65,Word feeling partner popular green a police. +49,66,46,Indeed state discuss group. +50,65,83,About administration science cell environmental understand treat finish. +51,77,76,Red community box white. +52,28,82,Try walk outside. +53,100,74,Capital view can firm sure. +54,5,76,Color lay offer begin professional wife million human. +55,83,16,Almost chair tough simple character air. +56,99,90,Station discover run very financial yourself. +57,8,48,Rather training behind follow experience. +58,12,21,Popular religious civil learn will. +59,75,89,Weight particular moment international just. +60,44,39,Reality class opportunity security indeed example low hundred. +61,95,13,Then window method then fight huge of. +62,66,53,Add available development quality manager. +63,74,14,Fast message authority position tough final carry. +64,18,38,Great discussion drive choose food speech. +65,14,42,Offer across they happen well make enjoy. +66,3,97,Base gun identify step somebody may. +67,76,52,Mouth go since animal garden sense. +68,45,68,Professional nothing husband or policy project half. +69,53,6,Middle professional deal chair number piece. +70,18,85,With event the. +71,12,100,Minute likely enough trip figure major two technology. +72,79,91,Lawyer police although north opportunity deep image. +73,85,30,Every cut PM close north food event. +74,24,22,Dark property back news sign energy walk. +75,7,87,Politics able fish. +76,78,32,Country radio really. +77,89,75,Teach like leg past modern black single indicate. +78,100,20,Owner offer position including. +79,77,39,Poor little girl particular theory beat represent. +80,52,51,Guy member road far area media rule might. +81,78,73,Likely career anyone condition huge decide low. +82,52,75,Medical structure piece total nor another inside. +83,70,74,Blue society hard cost control. +84,25,40,Fact accept democratic result state. +85,9,39,Down home street camera hit face course. +86,59,1,Community huge building responsibility blue believe. +87,30,100,Down generation firm kind million. +88,70,7,Generation day else read building. +89,20,81,Today seven response something machine beat travel. +90,95,43,Position officer hit grow entire who. +91,3,95,Kitchen church full become cover. +92,11,91,Low pick such. +93,84,51,Build condition similar traditional. +94,61,99,Side with democratic fast. +95,17,75,Morning remember decide laugh drive program. +96,44,78,Fish protect side likely compare. +97,32,63,Spend easy question often thank speech. +98,65,72,Space Mr seat blue cup. +99,91,34,Everyone yourself avoid officer study cold here. +100,11,54,Whatever picture man. diff --git a/database/mock_db/users.csv b/database/mock_db/users.csv index 8b13789..0bcd785 100644 --- a/database/mock_db/users.csv +++ b/database/mock_db/users.csv @@ -1 +1,101 @@ - +user_id,name,email,state_id,country_id,user_status_id,user_category_id +1,Dustin Smith,chad31@example.net,3,3,2,3 +2,Michael Travis,gcampbell@example.net,3,1,1,1 +3,William Wagner,brenthughes@example.org,4,3,1,1 +4,Tracy Reed,steven63@example.net,3,1,3,2 +5,Lisa Wong,michael22@example.com,4,3,3,2 +6,Douglas Carroll,carlsondaniel@example.com,4,1,2,1 +7,Andrea Jacobs,zmedina@example.net,2,1,3,3 +8,Erik Moran,thomasbranch@example.org,4,2,3,2 +9,Caitlin Hall,ilewis@example.net,4,2,3,2 +10,Joseph Mitchell,wmichael@example.com,1,1,2,2 +11,Philip Smith,fbraun@example.net,4,3,1,2 +12,Juan Wang,angel50@example.org,2,2,1,3 +13,Shelly Chung,derrick22@example.com,1,3,3,1 +14,Dr. Matthew Stokes III,kimberly19@example.org,5,1,1,1 +15,Gary Smith,laurenramos@example.net,2,3,3,3 +16,Melissa Herman,heidizamora@example.com,3,3,2,1 +17,Sarah Kennedy,annette97@example.org,1,2,3,3 +18,Aimee Werner,molly56@example.com,3,2,3,1 +19,Rebecca Fuentes,kimberlyjackson@example.org,1,3,3,1 +20,Danielle Robinson,kevinwilson@example.org,3,2,2,1 +21,Brianna Johnson,johnmiller@example.com,3,3,2,1 +22,Sara Guerrero,lindameyer@example.net,2,3,2,1 +23,Alexa Mack,rojasjoy@example.net,4,1,2,2 +24,Cindy Martin,jamesbuchanan@example.net,2,2,1,2 +25,Ronald Olson,williambenitez@example.net,2,1,3,2 +26,David Torres,esims@example.net,1,1,2,3 +27,Wanda Little,roseodonnell@example.org,1,3,3,3 +28,Cathy Rice,milesbrandon@example.com,4,1,1,3 +29,Amanda Green,zharvey@example.net,2,2,2,2 +30,Mrs. Jessica Wright,jacquelinereed@example.net,3,2,2,2 +31,Mark Mendoza,brittanyvargas@example.com,5,1,1,1 +32,Jesse Wells,jason64@example.com,2,3,2,1 +33,Andrew Walker,kathryn95@example.com,2,3,1,3 +34,Kelly Lang,xmartinez@example.com,2,1,3,3 +35,Traci Lamb,turnerrachel@example.org,4,2,3,2 +36,George Hall,kberry@example.org,1,3,3,3 +37,Joseph Callahan,emays@example.com,5,1,1,3 +38,Susan Murphy,monica38@example.net,3,3,1,2 +39,Cassandra Lopez,michaelsmith@example.org,3,1,1,3 +40,Jason Salas,daniellehanson@example.net,1,1,1,1 +41,Frank West,melissasmith@example.org,2,2,2,3 +42,Susan Holt,michaelbaker@example.org,4,3,1,3 +43,Donald Smith,allison54@example.org,3,1,3,1 +44,Jessica Riddle,johnsonelizabeth@example.com,3,1,2,2 +45,Cathy Doyle,johnsoncrystal@example.org,4,1,2,3 +46,Kristen Johnson,sandralucas@example.org,1,2,3,2 +47,Claudia Gray,snowtraci@example.net,5,2,2,3 +48,Brian Henderson,pittsgarrett@example.net,5,2,2,2 +49,Joshua White,robert78@example.org,4,1,3,1 +50,Kelly French,kellyburns@example.com,1,1,2,1 +51,Patrick Murphy,ucarr@example.com,2,2,1,2 +52,Michael Elliott,bayers@example.com,5,3,3,1 +53,Melissa Anderson,pjacobs@example.org,3,3,1,2 +54,Jennifer Pierce,mhill@example.org,4,3,3,1 +55,Antonio Black,careyleslie@example.net,5,2,1,2 +56,Timothy Andrews,prandolph@example.com,5,3,3,3 +57,Dana Gardner,barbara13@example.org,2,3,3,3 +58,Joseph Miller,dclark@example.com,3,2,1,2 +59,Darrell Boyd,douglas46@example.com,5,3,2,3 +60,Thomas Zavala,njackson@example.com,4,3,1,1 +61,Ashley Booker,lynchmorgan@example.com,2,2,1,2 +62,Eric Hebert,lwoods@example.org,2,3,1,2 +63,Matthew Wright,daniel17@example.org,3,1,2,1 +64,Robert James,turnerjames@example.net,2,2,2,2 +65,Ashley Flowers,latoyaphillips@example.com,4,1,1,2 +66,Elizabeth Brooks,lisa47@example.com,4,2,2,3 +67,Melissa Morris,larsonrichard@example.net,4,3,3,1 +68,Jamie Sheppard,ilee@example.com,1,1,3,2 +69,Jason Tucker,javiercook@example.com,5,2,3,2 +70,Christian Spencer,samuelgeorge@example.org,5,3,2,1 +71,Christine Cobb,ramossarah@example.net,4,2,1,2 +72,Nathan Cross,xwebb@example.net,5,2,1,2 +73,Ashley Rocha,janetcox@example.com,2,2,3,2 +74,Jennifer Price,jeffrey15@example.org,3,1,2,1 +75,April Martin,ymartinez@example.com,1,3,2,2 +76,Dustin Aguirre,shieldsjacqueline@example.net,5,1,2,2 +77,Maria Sanchez,nancyanderson@example.com,2,1,2,3 +78,Leslie Wilson,blakebaker@example.com,1,3,3,3 +79,Nicholas Johnson,howardcynthia@example.net,2,2,3,3 +80,Dr. Annette Logan,mdavidson@example.com,5,3,3,3 +81,Kevin Russell,daniel47@example.com,3,2,3,1 +82,John Crawford,cynthia94@example.net,3,3,1,3 +83,Belinda Brown,smithjonathan@example.org,2,3,1,2 +84,Lisa Holmes,jamesmiller@example.net,2,3,3,3 +85,Cory Herrera,justin29@example.com,4,2,3,2 +86,Karen Garza,egrimes@example.org,4,3,2,2 +87,Eduardo Chavez,spencerbrianna@example.org,4,1,1,2 +88,Philip Brown,mullinsdanielle@example.org,5,3,1,2 +89,James Collins,jlyons@example.net,2,3,3,3 +90,Ronald Lloyd MD,lyork@example.net,2,1,1,1 +91,Elizabeth Gross,johnflores@example.com,5,3,2,1 +92,Victoria Parker,jonesdarlene@example.org,5,2,1,1 +93,Richard Campbell,qschneider@example.org,2,2,2,3 +94,James James,fordamber@example.net,2,2,3,2 +95,Audrey Ramirez,michael32@example.net,2,1,2,1 +96,Rita Owens,scott64@example.org,1,3,2,3 +97,Michael Soto,heathermartin@example.com,5,1,3,2 +98,Erin Hoffman,donovandavid@example.com,2,2,1,1 +99,Stephanie Baird,tpope@example.com,3,3,1,2 +100,Erica Ingram,hartjames@example.org,4,2,1,2 diff --git a/database/mock_db/volunteer_details.csv b/database/mock_db/volunteer_details.csv new file mode 100644 index 0000000..67678e2 --- /dev/null +++ b/database/mock_db/volunteer_details.csv @@ -0,0 +1,101 @@ +volunteer_id,user_id,skills,rating +1,3,"Psychologist, occupational",1.54 +2,69,Publishing copy,3.59 +3,57,Leisure centre manager,4.21 +4,66,Consulting civil engineer,4.23 +5,30,Musician,2.91 +6,87,Information systems manager,1.61 +7,48,Physiological scientist,1.07 +8,77,Trading standards officer,2.49 +9,94,"Pilot, airline",2.06 +10,96,"Teacher, secondary school",2.21 +11,21,Museum/gallery curator,4.98 +12,76,Paramedic,1.76 +13,10,Futures trader,3.37 +14,14,Air cabin crew,1.78 +15,5,"Engineer, aeronautical",2.78 +16,35,Personal assistant,3.21 +17,91,Systems analyst,1.87 +18,64,"Clinical scientist, histocompatibility and immunogenetics",2.66 +19,40,"Scientist, product/process development",2.22 +20,10,Proofreader,2.75 +21,59,Television camera operator,3.76 +22,99,Equality and diversity officer,2.51 +23,14,"Psychologist, clinical",4.0 +24,1,Best boy,4.83 +25,31,"Producer, radio",2.78 +26,50,Counsellor,2.5 +27,60,Medical physicist,1.12 +28,3,Artist,3.34 +29,21,Firefighter,4.52 +30,67,Community education officer,2.92 +31,65,Publishing copy,3.43 +32,41,Emergency planning/management officer,2.11 +33,84,Museum/gallery exhibitions officer,3.42 +34,99,Drilling engineer,3.36 +35,20,Prison officer,1.63 +36,22,Advertising art director,4.19 +37,67,"Engineer, electronics",3.05 +38,43,Geographical information systems officer,4.3 +39,93,Podiatrist,2.16 +40,92,"Engineer, civil (contracting)",3.09 +41,72,Planning and development surveyor,2.23 +42,34,Personal assistant,4.65 +43,74,Pathologist,3.91 +44,53,Archaeologist,3.2 +45,70,"Therapist, nutritional",4.32 +46,8,Conference centre manager,3.4 +47,5,Barista,1.29 +48,49,"Scientist, physiological",1.63 +49,1,Animal nutritionist,2.73 +50,34,"Pharmacist, hospital",2.71 +51,55,"Buyer, retail",3.22 +52,73,Operations geologist,5.0 +53,31,"Psychologist, prison and probation services",3.03 +54,64,"Journalist, magazine",2.93 +55,26,Control and instrumentation engineer,3.42 +56,57,Sports therapist,3.27 +57,3,"Surveyor, commercial/residential",3.14 +58,46,"Radiographer, diagnostic",3.88 +59,9,Geochemist,2.98 +60,91,Musician,2.0 +61,13,Retail manager,2.23 +62,26,Medical sales representative,1.89 +63,5,Event organiser,2.92 +64,11,Museum/gallery conservator,4.98 +65,36,Training and development officer,2.16 +66,59,Exhibition designer,1.46 +67,83,Company secretary,2.48 +68,68,"Scientist, water quality",4.09 +69,78,Special effects artist,2.13 +70,36,Race relations officer,1.67 +71,54,Marketing executive,1.16 +72,63,Dramatherapist,3.51 +73,6,Chartered management accountant,2.64 +74,34,"Therapist, drama",2.83 +75,62,Biomedical scientist,2.35 +76,47,Immigration officer,2.43 +77,96,Scientific laboratory technician,2.23 +78,11,Dealer,1.79 +79,26,Medical secretary,3.58 +80,56,"Conservator, museum/gallery",2.65 +81,17,"Production designer, theatre/television/film",2.19 +82,72,"Surveyor, hydrographic",1.28 +83,27,Equality and diversity officer,1.31 +84,58,"Physicist, medical",1.56 +85,48,Armed forces operational officer,4.83 +86,25,"Scientist, water quality",2.55 +87,32,Health service manager,2.41 +88,84,Educational psychologist,3.79 +89,11,"Pilot, airline",1.89 +90,72,"Therapist, art",1.54 +91,90,"Surveyor, mining",1.25 +92,22,"Journalist, magazine",1.73 +93,51,Psychiatrist,4.08 +94,83,Homeopath,1.7 +95,55,"Doctor, hospital",4.58 +96,6,"Pharmacist, hospital",2.57 +97,78,Photographer,3.37 +98,18,"Designer, multimedia",2.89 +99,98,Secretary/administrator,1.77 +100,17,Information officer,1.98