18
18
use RuntimeException ;
19
19
use stdClass ;
20
20
use Neo4j \QueryAPI \Objects \Bookmarks ;
21
+ use src \Enums \AccessMode ;
21
22
22
23
class Neo4jQueryAPI
23
24
{
@@ -53,19 +54,18 @@ public static function login(string $address, string $username, string $password
53
54
* @throws RequestExceptionInterface
54
55
* @api
55
56
*/
56
- public function run (string $ cypher , array $ parameters = [], string $ database = 'neo4j ' , Bookmarks $ bookmark = null , ?string $ impersonatedUser = null , string $ accessMode = ' WRITE ' ): ResultSet
57
+ public function run (string $ cypher , array $ parameters = [], string $ database = 'neo4j ' , Bookmarks $ bookmark = null , ?string $ impersonatedUser = null , AccessMode $ accessMode = AccessMode:: WRITE ): ResultSet
57
58
{
58
59
$ validAccessModes = ['READ ' , 'WRITE ' , 'ROUTE ' ];
59
- if (!in_array (strtoupper ($ accessMode ), $ validAccessModes , true )) {
60
- throw new InvalidArgumentException ("Invalid access mode: $ accessMode. Allowed values are 'READ', 'WRITE', or 'ROUTE'. " );
61
- }
60
+
62
61
try {
63
62
$ payload = [
64
63
'statement ' => $ cypher ,
65
64
'parameters ' => empty ($ parameters ) ? new stdClass () : $ parameters ,
66
65
'includeCounters ' => true ,
67
- 'routing ' => strtoupper ( $ accessMode)
66
+ 'accessMode ' => $ accessMode-> value ,
68
67
];
68
+
69
69
error_log ("Request Payload: " . json_encode ($ payload ));
70
70
71
71
if ($ bookmark !== null ) {
@@ -74,8 +74,12 @@ public function run(string $cypher, array $parameters = [], string $database = '
74
74
if ($ impersonatedUser !== null ) {
75
75
$ payload ['impersonatedUser ' ] = $ impersonatedUser ;
76
76
}
77
-
78
- //
77
+ if ($ accessMode ) {
78
+ $ payload ['accessMode ' ] = $ accessMode ->value ;
79
+ }
80
+ if (!in_array ($ accessMode , AccessMode::cases (), true )) {
81
+ throw new RuntimeException ("Invalid AccessMode: " . print_r ($ accessMode , true ));
82
+ }
79
83
80
84
81
85
$ response = $ this ->client ->post ('/db/ ' . $ database . '/query/v2 ' , [
@@ -126,7 +130,8 @@ public function run(string $cypher, array $parameters = [], string $database = '
126
130
$ rows ,
127
131
$ resultCounters ,
128
132
new Bookmarks ($ data ['bookmarks ' ] ?? []),
129
- $ profile
133
+ $ profile ,
134
+ $ accessMode
130
135
);
131
136
} catch (RequestExceptionInterface $ e ) {
132
137
error_log ("Request Exception: " . $ e ->getMessage ());
0 commit comments