'error', 'message' => 'Koneksi database gagal. Pastikan MySQL service berjalan dan DB_HOST/DB_USER/DB_PASSWORD benar. Error: ' . mysqli_connect_error() ])); } mysqli_set_charset($conn, 'utf8mb4'); $safeDb = preg_replace('/[^a-zA-Z0-9_]/', '', $db); mysqli_query($conn, "CREATE DATABASE IF NOT EXISTS `$safeDb` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"); mysqli_select_db($conn, $safeDb); mysqli_query($conn, "CREATE TABLE IF NOT EXISTS tb_jalan ( id INT(11) NOT NULL AUTO_INCREMENT, nama_jalan VARCHAR(200) NOT NULL, status_jalan ENUM('Nasional','Provinsi','Kabupaten') NOT NULL DEFAULT 'Kabupaten', panjang_meter DECIMAL(15,2) NOT NULL DEFAULT 0, geojson LONGTEXT NOT NULL, keterangan TEXT, foto VARCHAR(255) NULL, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4"); mysqli_query($conn, "CREATE TABLE IF NOT EXISTS tb_parsil ( id INT(11) NOT NULL AUTO_INCREMENT, nama_pemilik VARCHAR(200) NOT NULL, no_sertifikat VARCHAR(100) NOT NULL, status_kepemilikan ENUM('SHM','HGB','HGU','HP') NOT NULL DEFAULT 'SHM', luas_m2 DECIMAL(20,4) NOT NULL DEFAULT 0, geojson LONGTEXT NOT NULL, alamat TEXT, foto VARCHAR(255) NULL, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4"); mysqli_query($conn, "CREATE TABLE IF NOT EXISTS tb_jalan_rusak ( id INT(11) NOT NULL AUTO_INCREMENT, lokasi VARCHAR(200) NOT NULL, tingkat ENUM('Ringan','Sedang','Berat') NOT NULL DEFAULT 'Sedang', jenis VARCHAR(100) NOT NULL DEFAULT '', geojson LONGTEXT NOT NULL, keterangan TEXT, foto VARCHAR(255) NULL, tanggal_lapor DATE NOT NULL DEFAULT (CURRENT_DATE), created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4"); header('Content-Type: application/json'); header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE'); header('Access-Control-Allow-Headers: Content-Type');