import os

import psycopg

# Parameter koneksi mengikuti variabel environment PG* -- konvensi
# libpq yang sama dengan psql. Sesuaikan untuk server Anda; kata
# sandi cukup diberikan lewat variabel environment PGPASSWORD.
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"),
)

# Data awal produk Toko Maju Jaya untuk seluruh contoh chapter ini.
PRODUK_AWAL = [
    (1, "Mouse Kantor Ergonomis", 85000, 25),
    (2, "Papan Ketik Mekanik", 750000, 12),
    (3, "Monitor 24 inci IPS", 1850000, 8),
    (4, "Kabel HDMI 2 meter", 65000, 40),
]

# Blok `with` menutup koneksi di akhir; keluar tanpa error
# berarti seluruh pernyataan di dalamnya di-commit.
with psycopg.connect(**KONEKSI) as conn:
    conn.execute("DROP TABLE IF EXISTS produk")
    conn.execute(
        """
        CREATE TABLE produk (
            id    integer PRIMARY KEY,
            nama  text NOT NULL,
            harga bigint NOT NULL CHECK (harga >= 0),
            stok  integer NOT NULL DEFAULT 0
        )
        """
    )
    cur = conn.cursor()
    cur.executemany(
        "INSERT INTO produk (id, nama, harga, stok) VALUES (%s, %s, %s, %s)",
        PRODUK_AWAL,
    )
    print("Tabel produk dibuat,", len(PRODUK_AWAL), "baris terisi")

# Verifikasi: baca kembali isi tabel dari koneksi kedua.
with psycopg.connect(**KONEKSI) as conn:
    cur = conn.execute("SELECT id, nama, harga FROM produk ORDER BY id")
    for id_, nama, harga in cur.fetchall():
        print(f"  {id_} {nama} Rp{harga:,}".replace(",", "."))
