import os

import psycopg

# Parameter koneksi mengikuti variabel environment PG* --
# konvensi libpq yang sama dengan psql.
KONEKSI = dict(
    host=os.environ.get("PGHOST", "localhost"),
    port=os.environ.get("PGPORT", "5432"),
    user=os.environ.get("PGUSER", "postgres"),
    dbname=os.environ.get("PGDATABASE", "toko_db"),
)

with psycopg.connect(**KONEKSI) as conn:
    # 1) Parameter %s: nilai dikirim terpisah dari teks SQL.
    cur = conn.execute(
        "SELECT id, nama, harga FROM produk WHERE harga <= %s ORDER BY id",
        (200000,),
    )
    print("Produk dengan harga di bawah Rp200.000:")
    for id_, nama, harga in cur.fetchall():
        print(f"  {id_}. {nama} Rp{harga:,}".replace(",", "."))

    # 2) fetchone: mengambil satu baris hasil, cocok untuk count.
    cur = conn.execute("SELECT count(*) FROM produk")
    print("Jumlah produk:", cur.fetchone()[0])

    # 3) Iterasi langsung atas cursor: baris dibaca satu per satu.
    cur = conn.execute(
        "SELECT nama FROM produk WHERE stok >= %s ORDER BY id", (20,)
    )
    print("Produk dengan stok >= 20:")
    for (nama,) in cur:
        print(" ", nama)
