import psycopg2 import json from faker import Faker import os from dotenv import load_dotenv # Load environment variables from .env file load_dotenv() # Set up Faker for generating fake user data fake = Faker() # Get database connection def get_database_connection(): database_url = os.getenv("DATABASE_URL") if not database_url: raise ValueError("DATABASE_URL is not set in environment variables.") return psycopg2.connect(database_url) # Function to insert a single user into the database def insert_user(name, profile_name, about, skills, rating, trust_score, ninja_level, task_experience, online_status, profile_pic, is_pro): skills_json = json.dumps(skills) conn = get_database_connection() try: with conn.cursor() as curs: curs.execute(""" INSERT INTO users (name, profile_name, about, skills, rating, trust_score, ninja_level, task_experience, online_status, profile_pic, is_pro) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) RETURNING user_id """, (name, profile_name, about, skills_json, rating, trust_score, ninja_level, task_experience, online_status, profile_pic, is_pro)) user_id = curs.fetchone()[0] conn.commit() print(f"User added with ID: {user_id}") except Exception as e: conn.rollback() print(f"Error adding user: {e}") finally: conn.close() # Function to generate and insert 5 unique users def insert_unique_users(): for _ in range(5): name = fake.name() profile_name = fake.user_name() about = fake.text() skills = [fake.job() for _ in range(5)] rating = round(min(fake.random.uniform(0, 5.00), 5.00), 2) # Ensure rating is within 0.00 to 5.00 trust_score = round(min(fake.random.uniform(0, 5.00), 5.00), 2) # Ensure trust_score is within 0.00 to 5.00 ninja_level = fake.random.randint(1, 10) task_experience = fake.random.randint(0, 1000) online_status = fake.boolean() profile_pic = fake.image_url() is_pro = fake.boolean() insert_user(name, profile_name, about, skills, rating, trust_score, ninja_level, task_experience, online_status, profile_pic, is_pro) if __name__ == "__main__": insert_unique_users()