import itertools
import random
import psycopg2
from psycopg2.extras import execute_batch
from datetime import datetime
# ===== MASTER DATA =====

angles = [
    "Analisis",
    "Cara memahami",
    "Strategi mengoptimalkan",
    "Perbandingan",
    "Dampak",
    "Pengaruh",
    "Studi tentang",
    "Evaluasi",
    "Panduan teknis",
    "Mekanisme kerja",
    "Fungsi utama",
    "Risiko",
    "Keunggulan",
    "Optimalisasi",
    "Eksplorasi",
    "Struktur sistem",
    "Konsep dasar",
    "Simulasi",
    "Faktor penting",
    "Teknik lanjutan"
]

elements = [
    "volatilitas tinggi",
    "volatilitas rendah",
    "RTP dinamis",
    "RTP tetap",
    "fitur free spin",
    "fitur multiplier",
    "fitur buy spin",
    "jackpot progresif",
    "wild simbol",
    "scatter simbol",
    "cascading reels",
    "megaways system",
    "cluster pays",
    "paylines tetap",
    "paylines fleksibel",
    "auto spin system",
    "turbo spin",
    "bonus game interaktif",
    "mode demo slot",
    "algoritma RNG",
    "slot HTML5",
    "slot mobile",
    "slot progresif",
    "slot reguler",
    "slot volatilitas campuran"
]

contexts = [
    "pada slot online modern",
    "dalam slot provider Asia",
    "untuk pemain pemula",
    "untuk pemain high roller",
    "pada slot bertema mitologi",
    "pada slot bertema petualangan",
    "dalam permainan real money",
    "untuk manajemen modal",
    "dalam strategi konservatif",
    "dalam strategi agresif",
    "untuk optimasi peluang menang",
    "dalam sesi bermain singkat",
    "dalam sesi bermain panjang",
    "pada sistem jangka panjang",
    "untuk pemain profesional",
    "dalam pendekatan matematis",
    "pada permainan kompetitif",
    "untuk pengelolaan risiko",
    "dalam simulasi teori probabilitas",
    "untuk evaluasi performa permainan"
]

DB_CONFIG = {
    "host": "127.0.0.1",
    "user": "databaseledak_topics",
    "password": "Y8T=kuZgDD26",
    "dbname": "databaseledak_topics_slot",
    "port": 5432
}


def generate_and_store(limit=50000, batch_size=1000):
    conn = psycopg2.connect(**DB_CONFIG)
    cursor = conn.cursor()

    combinations = list(itertools.product(angles, elements, contexts))
    random.shuffle(combinations)

    insert_query = """
        INSERT INTO topics (title, created_at)
        VALUES (%s, %s)
        ON CONFLICT DO NOTHING
    """

    batch = []
    count = 0

    for combo in combinations:
        if count >= limit:
            break

        topic = f"{combo[0]} {combo[1]} {combo[2]}"
        batch.append((topic, datetime.utcnow()))
        count += 1

        if len(batch) >= batch_size:
            execute_batch(cursor, insert_query, batch)
            conn.commit()
            batch = []

    if batch:
        execute_batch(cursor, insert_query, batch)
        conn.commit()

    cursor.close()
    conn.close()
    print(f"Inserted {count} topics.")
if __name__ == "__main__":
    generate_and_store()
