import uuid import random import sqlite3 # --------------------------- # Data Classes # --------------------------- class Restaurant: def __init__(self, restaurant_id, name, cuisine, location, seating_capacity, rating, address, contact, price_range, special_features): self.restaurant_id = restaurant_id self.name = name self.cuisine = cuisine self.location = location self.seating_capacity = seating_capacity self.rating = rating self.address = address self.contact = contact self.price_range = price_range self.special_features = special_features self.tables = [] class Table: def __init__(self, table_id, restaurant_id, capacity=4): self.table_id = table_id self.restaurant_id = restaurant_id self.capacity = capacity # --------------------------- # Sample Data # --------------------------- restaurant_names = [ "Bella Italia", "Spice Symphony", "Tokyo Ramen House", "Saffron Grill", "El Toro Loco", "Noodle Bar", "Le Petit Bistro", "Tandoori Nights", "Green Leaf Cafe", "Ocean Pearl", "Mama Mia Pizza", "The Dumpling Den", "Bangkok Express", "Curry Kingdom", "The Garden Table", "Skyline Dine", "Pasta Republic", "Street Tacos Co", "Miso Hungry", "Chez Marie" ] locations = ['Downtown', 'Uptown', 'Midtown', 'Suburbs'] special_features_list = ['Outdoor Seating', 'Pet-Friendly', 'Live Music', 'Rooftop View', 'Private Dining'] def infer_cuisine(name): name = name.lower() if "italia" in name or "pasta" in name or "mama mia" in name: return "Italian" elif "tokyo" in name or "ramen" in name or "miso" in name: return "Japanese" elif "saffron" in name or "tandoori" in name or "curry" in name: return "Indian" elif "dumpling" in name or "noodle" in name: return "Chinese" elif "bistro" in name or "chez" in name or "marie" in name: return "French" elif "bangkok" in name: return "Thai" elif "el toro" in name or "tacos" in name: return "Mexican" elif "green" in name or "garden" in name: return random.choice(["Multi-Cuisine", "Healthy", "Fusion"]) elif "skyline" in name or "ocean" in name: return random.choice(["Multi-Cuisine", "Seafood", "Fusion"]) else: return random.choice(["Italian", "Mexican", "Indian", "Japanese", "Chinese", "Thai", "French", "Multi-Cuisine"]) # Create restaurant objects restaurants = [] for i in range(20): rest_id = str(uuid.uuid4()) name = restaurant_names[i] cuisine = infer_cuisine(name) if cuisine == "Multi-Cuisine": cuisine = random.sample(["Italian", "Chinese", "Indian", "Mexican", "French"], k=2) location = random.choice(locations) num_tables = random.randint(10, 20) seating_capacity = num_tables * 4 rating = round(random.uniform(3.5, 5.0), 1) address = f"{100 + i} Main Street, {location}" contact = f"555-{1000 + i}" price_range = random.choice(['$', '$$', '$$$']) features = random.sample(special_features_list, k=2) restaurant = Restaurant( restaurant_id=rest_id, name=name, cuisine=cuisine, location=location, seating_capacity=seating_capacity, rating=rating, address=address, contact=contact, price_range=price_range, special_features=features ) for _ in range(num_tables): table_id = str(uuid.uuid4()) table = Table(table_id=table_id, restaurant_id=rest_id) restaurant.tables.append(table) restaurants.append(restaurant) # --------------------------- # Insert into SQLite Database # --------------------------- conn = sqlite3.connect("restaurant_reservation.db") cursor = conn.cursor() for r in restaurants: cuisine_str = ", ".join(r.cuisine) if isinstance(r.cuisine, list) else r.cuisine features_str = ", ".join(r.special_features) cursor.execute(""" INSERT INTO restaurants (id, name, cuisine, location, seating_capacity, rating, address, contact, price_range, special_features) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) """, ( r.restaurant_id, r.name, cuisine_str, r.location, r.seating_capacity, r.rating, r.address, r.contact, r.price_range, features_str )) for t in r.tables: cursor.execute(""" INSERT INTO tables (id, restaurant_id, capacity) VALUES (?, ?, ?) """, ( t.table_id, t.restaurant_id, t.capacity )) conn.commit() conn.close() print("✅ Restaurants and tables successfully added to the database.")