From d7fef9d8158f798c4d3e416d4a2b33a9835410d0 Mon Sep 17 00:00:00 2001 From: Andreas Braun Date: Thu, 9 Feb 2023 10:53:06 +0100 Subject: [PATCH] Report package version when establishing connection --- src/Connection.php | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/Connection.php b/src/Connection.php index c78ac95c1..3a3d235ed 100644 --- a/src/Connection.php +++ b/src/Connection.php @@ -2,17 +2,22 @@ namespace Jenssegers\Mongodb; +use function class_exists; +use Composer\InstalledVersions; use Illuminate\Database\Connection as BaseConnection; use Illuminate\Support\Arr; use InvalidArgumentException; use Jenssegers\Mongodb\Concerns\ManagesTransactions; use MongoDB\Client; use MongoDB\Database; +use Throwable; class Connection extends BaseConnection { use ManagesTransactions; + private static ?string $version = null; + /** * The MongoDB database handler. * @@ -169,6 +174,11 @@ protected function createConnection($dsn, array $config, array $options): Client $driverOptions = $config['driver_options']; } + $driverOptions['driver'] = [ + 'name' => 'laravel-mongodb', + 'version' => self::getVersion(), + ]; + // Check if the credentials are not already set in the options if (! isset($options['username']) && ! empty($config['username'])) { $options['username'] = $config['username']; @@ -308,4 +318,22 @@ public function __call($method, $parameters) { return $this->db->$method(...$parameters); } + + private static function getVersion(): string + { + return self::$version ?? self::lookupVersion(); + } + + private static function lookupVersion(): string + { + if (class_exists(InstalledVersions::class)) { + try { + return self::$version = InstalledVersions::getPrettyVersion('jenssegers/laravel-mongodb'); + } catch (Throwable $t) { + // Ignore exceptions and return unknown version + } + } + + return self::$version = 'unknown'; + } }