prefix . 'metaforge_ai_memory'; // 1. Save locally to WordPress Database // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery -- Custom AI memory database table. $wpdb->insert( $table_name, array( 'user_id' => $user_id, 'context_group' => sanitize_text_field( $context_group ), 'prompt' => sanitize_textarea_field( $prompt ), 'response_json' => $response_json, // raw json response 'created_at' => current_time( 'mysql', true ), ), array( '%d', '%s', '%s', '%s', '%s' ) ); $memory_id = $wpdb->insert_id; return $memory_id; } // Fetch the last $limit chats for a specific user and context/group public static function get_recent_history( $user_id, $context_group, $limit = 3 ) { global $wpdb; $table_name = $wpdb->prefix . 'metaforge_ai_memory'; // Order by created_at DESC to get recent, then we can reverse it if needed. // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- Custom AI memory table retrieval. $results = $wpdb->get_results( $wpdb->prepare( 'SELECT prompt, response_json FROM ' . $wpdb->prefix . 'metaforge_ai_memory WHERE user_id = %d AND context_group = %s ORDER BY created_at DESC LIMIT %d', $user_id, $context_group, $limit ), ARRAY_A ); return array_reverse( $results ); // Return oldest to newest to maintain conversational linearity } }