import os

import psycopg
from psycopg.rows import dict_row

# 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"),
)

# row_factory=dict_row: setiap baris berupa dictionary {kolom: nilai},
# bukan tuple posisional. Kolom dipanggil lewat namanya.
with psycopg.connect(**KONEKSI, row_factory=dict_row) as conn:
    cur = conn.execute(
        "SELECT nama, harga, stok FROM produk WHERE stok < %s ORDER BY id",
        (20,),
    )
    print("Produk dengan stok di bawah 20 (dictionary):")
    for baris in cur.fetchall():
        teks = f"  {baris['nama']}: Rp{baris['harga']:,} (stok {baris['stok']})"
        print(teks.replace(",", "."))
