Skip to content

Commit 61d3d74

Browse files
committed
simplified config objects
1 parent b173723 commit 61d3d74

File tree

5 files changed

+47
-80
lines changed

5 files changed

+47
-80
lines changed

src/Databags/Bookmark.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ final class Bookmark
2323
/**
2424
* @param list<string> $bookmarks
2525
*/
26-
public function __construct(?iterable $bookmarks = null)
26+
public function __construct(?array $bookmarks = null)
2727
{
2828
$this->values = $bookmarks ?? [];
2929
}

src/Databags/DriverConfiguration.php

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,32 +51,32 @@ final class DriverConfiguration
5151
* @psalm-external-mutation-free
5252
*/
5353
public function __construct(
54-
private ?string $userAgent,
55-
$httpPsrBindings,
54+
private string|null $userAgent,
55+
callable|HttpPsrBindings|null $httpPsrBindings,
5656
private SslConfiguration $sslConfig,
57-
private ?int $maxPoolSize,
58-
$cache,
59-
private ?float $acquireConnectionTimeout,
60-
$semaphore
57+
private int|null $maxPoolSize,
58+
CacheInterface|callable|null $cache,
59+
private float|null $acquireConnectionTimeout,
60+
callable|SemaphoreFactoryInterface|null $semaphore
6161
) {
6262
$this->httpPsrBindings = $httpPsrBindings;
6363
$this->cache = $cache;
6464
$this->semaphoreFactory = $semaphore;
6565
}
6666

6767
/**
68-
* @param pure-callable():(HttpPsrBindings|null)|HttpPsrBindings|null $httpPsrBindings
68+
* @param callable():(HttpPsrBindings|null)|HttpPsrBindings|null $httpPsrBindings
6969
*
7070
* @pure
7171
*/
72-
public static function create(?string $userAgent, $httpPsrBindings, SslConfiguration $sslConfig, int $maxPoolSize, CacheInterface $cache, float $acquireConnectionTimeout, SemaphoreFactoryInterface $semaphore): self
72+
public static function create(?string $userAgent, callable|HttpPsrBindings|null $httpPsrBindings, SslConfiguration $sslConfig, int $maxPoolSize, CacheInterface $cache, float $acquireConnectionTimeout, SemaphoreFactoryInterface $semaphore): self
7373
{
7474
return new self($userAgent, $httpPsrBindings, $sslConfig, $maxPoolSize, $cache, $acquireConnectionTimeout, $semaphore);
7575
}
7676

7777
/**
7878
* Creates a default configuration with a user agent based on the driver version
79-
* and HTTP PSR implementation auto detected from the environment.
79+
* and HTTP PSR implementation auto-detected from the environment.
8080
*
8181
* @pure
8282
*/

src/Databags/HttpPsrBindings.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,11 @@ final class HttpPsrBindings
4343
/**
4444
* @psalm-mutation-free
4545
*
46-
* @param ClientInterface|callable():ClientInterface|null $client
47-
* @param StreamFactoryInterface|callable():StreamFactoryInterface|null $streamFactory
48-
* @param RequestFactoryInterface|callable():RequestFactoryInterface|null $requestFactory
46+
* @param callable():ClientInterface|ClientInterface|null $client
47+
* @param callable():StreamFactoryInterface|StreamFactoryInterface|null $streamFactory
48+
* @param callable():RequestFactoryInterface|RequestFactoryInterface|null $requestFactory
4949
*/
50-
public function __construct($client = null, $streamFactory = null, $requestFactory = null)
50+
public function __construct(callable|ClientInterface|null $client = null, callable|StreamFactoryInterface $streamFactory = null, callable|RequestFactoryInterface $requestFactory = null)
5151
{
5252
$this->client = $client ?? static fn (): ClientInterface => Psr18ClientDiscovery::find();
5353
$this->streamFactory = $streamFactory ?? static fn (): StreamFactoryInterface => Psr17FactoryDiscovery::findStreamFactory();
@@ -57,11 +57,11 @@ public function __construct($client = null, $streamFactory = null, $requestFacto
5757
/**
5858
* @pure
5959
*
60-
* @param ClientInterface|callable():ClientInterface|null $client
61-
* @param StreamFactoryInterface|callable():StreamFactoryInterface|null $streamFactory
62-
* @param RequestFactoryInterface|callable():RequestFactoryInterface|null $requestFactory
60+
* @param callable():ClientInterface|ClientInterface|null $client
61+
* @param callable():StreamFactoryInterface|StreamFactoryInterface|null $streamFactory
62+
* @param callable():RequestFactoryInterface|RequestFactoryInterface|null $requestFactory
6363
*/
64-
public static function create($client = null, $streamFactory = null, $requestFactory = null): self
64+
public static function create(callable|ClientInterface $client = null, callable|StreamFactoryInterface $streamFactory = null, callable|RequestFactoryInterface $requestFactory = null): self
6565
{
6666
return new self($client, $streamFactory, $requestFactory);
6767
}

src/Databags/SessionConfiguration.php

Lines changed: 16 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,6 @@
1313

1414
namespace Laudis\Neo4j\Databags;
1515

16-
use function call_user_func;
17-
use function is_callable;
18-
1916
use Laudis\Neo4j\Enum\AccessMode;
2017

2118
use function parse_str;
@@ -35,26 +32,21 @@ final class SessionConfiguration
3532
public const DEFAULT_BOOKMARKS = '[]';
3633

3734
/**
38-
* @param pure-callable():(int|null)|int|null $fetchSize
39-
* @param pure-callable():(iterable<Bookmark>|null)|iterable<Bookmark>|null $bookmarks
40-
* @param pure-callable():((AccessMode | null))|AccessMode|null $accessMode
35+
* @param list<Bookmark>|null $bookmarks
4136
*/
4237
public function __construct(
4338
private ?string $database = null,
44-
private $fetchSize = null,
45-
private $accessMode = null,
46-
private $bookmarks = null
39+
private int|null $fetchSize = null,
40+
private AccessMode|null $accessMode = null,
41+
private array|null $bookmarks = null
4742
) {}
4843

4944
/**
5045
* @pure
5146
*
52-
* @param string|null $database
53-
* @param pure-callable():(int|null)|int|null $fetchSize
54-
* @param pure-callable():(AccessMode|null)|AccessMode|null $defaultAccessMode
55-
* @param pure-callable():(iterable<Bookmark>|null)|iterable<Bookmark> $bookmarks
47+
* @param list<Bookmark>|null $bookmarks
5648
*/
57-
public static function create($database = null, $fetchSize = null, $defaultAccessMode = null, $bookmarks = null): self
49+
public static function create(string|null $database = null, int|null $fetchSize = null, AccessMode|null $defaultAccessMode = null, array|null $bookmarks = null): self
5850
{
5951
return new self($database, $fetchSize, $defaultAccessMode, $bookmarks);
6052
}
@@ -69,40 +61,34 @@ public static function default(): self
6961

7062
/**
7163
* Creates a new session with the provided database.
72-
*
73-
* @param string|null $database
7464
*/
75-
public function withDatabase($database): self
65+
public function withDatabase(?string $database): self
7666
{
7767
return new self($database, $this->fetchSize, $this->accessMode, $this->bookmarks);
7868
}
7969

8070
/**
8171
* Creates a new session with the provided fetch size.
82-
*
83-
* @param pure-callable():(int|null)|int|null $size
8472
*/
85-
public function withFetchSize($size): self
73+
public function withFetchSize(?int $size): self
8674
{
8775
return new self($this->database, $size, $this->accessMode, $this->bookmarks);
8876
}
8977

9078
/**
9179
* Creates a new session with the provided access mode.
92-
*
93-
* @param pure-callable():(AccessMode|null)|AccessMode|null $defaultAccessMode
9480
*/
95-
public function withAccessMode($defaultAccessMode): self
81+
public function withAccessMode(?AccessMode $defaultAccessMode): self
9682
{
9783
return new self($this->database, $this->fetchSize, $defaultAccessMode, $this->bookmarks);
9884
}
9985

10086
/**
10187
* Creates a new session with the provided bookmarks.
10288
*
103-
* @param pure-callable():(iterable<Bookmark>|null)|iterable<Bookmark>|null $bookmarks
89+
* @param list<Bookmark>|null $bookmarks
10490
*/
105-
public function withBookmarks($bookmarks): self
91+
public function withBookmarks(?array $bookmarks): self
10692
{
10793
return new self($this->database, $this->fetchSize, $this->accessMode, $bookmarks);
10894
}
@@ -112,9 +98,7 @@ public function withBookmarks($bookmarks): self
11298
*/
11399
public function getFetchSize(): int
114100
{
115-
$fetchSize = is_callable($this->fetchSize) ? call_user_func($this->fetchSize) : $this->fetchSize;
116-
117-
return $fetchSize ?? self::DEFAULT_FETCH_SIZE;
101+
return $this->fetchSize ?? self::DEFAULT_FETCH_SIZE;
118102
}
119103

120104
/**
@@ -124,10 +108,7 @@ public function getFetchSize(): int
124108
*/
125109
public function getAccessMode(): AccessMode
126110
{
127-
$accessMode = is_callable($this->accessMode) ? call_user_func($this->accessMode) : $this->accessMode;
128-
129-
/** @psalm-suppress ImpureMethodCall */
130-
return $accessMode ?? AccessMode::WRITE();
111+
return $this->accessMode ?? AccessMode::WRITE();
131112
}
132113

133114
/**
@@ -141,13 +122,11 @@ public function getDatabase(): ?string
141122
/**
142123
* Returns the initial bookmarks.
143124
*
144-
* @return iterable<Bookmark>
125+
* @return list<Bookmark>
145126
*/
146-
public function getBookmarks(): iterable
127+
public function getBookmarks(): array
147128
{
148-
$bookmarks = is_callable($this->bookmarks) ? call_user_func($this->bookmarks) : $this->bookmarks;
149-
150-
return $bookmarks ?? [];
129+
return $this->bookmarks ?? [];
151130
}
152131

153132
/**

src/Databags/TransactionConfiguration.php

Lines changed: 13 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313

1414
namespace Laudis\Neo4j\Databags;
1515

16-
use function is_callable;
17-
1816
/**
1917
* Configuration object for transactions.
2018
*
@@ -26,21 +24,21 @@ final class TransactionConfiguration
2624
public const DEFAULT_METADATA = '[]';
2725

2826
/**
29-
* @param pure-callable():(float|null)|float|null $timeout timeout in seconds
30-
* @param pure-callable():(iterable<string, scalar|array|null>|null)|iterable<string, scalar|array|null>|null $metaData
27+
* @param float|null $timeout timeout in seconds
28+
* @param iterable<string, scalar|array|null>|null $metaData
3129
*/
3230
public function __construct(
33-
private $timeout = null,
34-
private $metaData = null
31+
private float|null $timeout = null,
32+
private iterable|null $metaData = null
3533
) {}
3634

3735
/**
3836
* @pure
3937
*
40-
* @param pure-callable():(float|null)|float|null $timeout timeout in seconds
41-
* @param pure-callable():(iterable<string, scalar|array|null>|null)|iterable<string, scalar|array|null>|null $metaData
38+
* @param float|null $timeout timeout in seconds
39+
* @param iterable<string, scalar|array|null>|null $metaData
4240
*/
43-
public static function create($timeout = null, $metaData = null): self
41+
public static function create(float|null $timeout = null, iterable|null $metaData = null): self
4442
{
4543
return new self($timeout, $metaData);
4644
}
@@ -60,43 +58,33 @@ public static function default(): self
6058
*/
6159
public function getMetaData(): ?iterable
6260
{
63-
$tbr = $this->metaData;
64-
if (is_callable($tbr)) {
65-
$tbr = $tbr();
66-
}
67-
68-
return $tbr;
61+
return $this->metaData;
6962
}
7063

7164
/**
7265
* Get the configured transaction timeout in seconds.
7366
*/
7467
public function getTimeout(): ?float
7568
{
76-
$tbr = $this->timeout;
77-
if (is_callable($tbr)) {
78-
$tbr = $tbr();
79-
}
80-
81-
return $tbr;
69+
return $this->timeout;
8270
}
8371

8472
/**
8573
* Creates a new transaction object with the provided timeout.
8674
*
87-
* @param pure-callable():(float|null)|float|null $timeout timeout in seconds
75+
* @param float|null $timeout timeout in seconds
8876
*/
89-
public function withTimeout($timeout): self
77+
public function withTimeout(float|null $timeout): self
9078
{
9179
return new self($timeout, $this->metaData);
9280
}
9381

9482
/**
9583
* Creates a new transaction object with the provided metadata.
9684
*
97-
* @param pure-callable():(iterable<string, scalar|array|null>|null)|iterable<string, scalar|array|null>|null $metaData
85+
* @param iterable<string, scalar|array|null>|null $metaData
9886
*/
99-
public function withMetaData($metaData): self
87+
public function withMetaData(iterable|null $metaData): self
10088
{
10189
return new self($this->timeout, $metaData);
10290
}

0 commit comments

Comments
 (0)