Skip to content

Commit 3e93380

Browse files
committed
Fix dot notation issue
1 parent d16251d commit 3e93380

File tree

7 files changed

+209
-82
lines changed

7 files changed

+209
-82
lines changed

index.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
*
2020
* @var string
2121
*/
22-
define('MPG_APP_VERSION', '0.9.8');
22+
define('MPG_APP_VERSION', '0.9.9');
2323

2424
/**
2525
* Development mode?

routes.php

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,43 +21,43 @@
2121
DatabaseController::class . '@renderQueryViewAction'
2222
);
2323

24-
$router->get(
25-
'/ajax/database/{databaseName}/listCollections',
24+
$router->post(
25+
'/ajax/database/listCollections',
2626
DatabaseController::class . '@listCollectionsAction'
2727
);
2828

29-
$router->get(
30-
'/ajax/database/{databaseName}/createCollection/{collectionName}',
29+
$router->post(
30+
'/ajax/database/createCollection',
3131
DatabaseController::class . '@createCollectionAction'
3232
);
3333

3434
$router->post(
35-
'/ajax/database/{databaseName}/collection/{collectionName}/insertOne',
35+
'/ajax/collection/insertOne',
3636
CollectionController::class . '@insertOneAction'
3737
);
3838

3939
$router->post(
40-
'/ajax/database/{databaseName}/collection/{collectionName}/count',
40+
'/ajax/collection/count',
4141
CollectionController::class . '@countAction'
4242
);
4343

4444
$router->post(
45-
'/ajax/database/{databaseName}/collection/{collectionName}/deleteOne',
45+
'/ajax/collection/deleteOne',
4646
CollectionController::class . '@deleteOneAction'
4747
);
4848

4949
$router->post(
50-
'/ajax/database/{databaseName}/collection/{collectionName}/find',
50+
'/ajax/collection/find',
5151
CollectionController::class . '@findAction'
5252
);
5353

5454
$router->post(
55-
'/ajax/database/{databaseName}/collection/{collectionName}/updateOne',
55+
'/ajax/collection/updateOne',
5656
CollectionController::class . '@updateOneAction'
5757
);
5858

59-
$router->get(
60-
'/ajax/database/{databaseName}/collection/{collectionName}/enumFields',
59+
$router->post(
60+
'/ajax/collection/enumFields',
6161
CollectionController::class . '@enumFieldsAction'
6262
);
6363

@@ -67,16 +67,16 @@
6767
);
6868

6969
$router->post(
70-
'/ajax/database/{databaseName}/collection/{collectionName}/createIndex',
70+
'/ajax/collection/createIndex',
7171
CollectionController::class . '@createIndexAction'
7272
);
7373

74-
$router->get(
75-
'/ajax/database/{databaseName}/collection/{collectionName}/listIndexes',
74+
$router->post(
75+
'/ajax/collection/listIndexes',
7676
CollectionController::class . '@listIndexesAction'
7777
);
7878

7979
$router->post(
80-
'/ajax/database/{databaseName}/collection/{collectionName}/dropIndex',
80+
'/ajax/collection/dropIndex',
8181
CollectionController::class . '@dropIndexAction'
8282
);

src/Controllers/CollectionController.php

Lines changed: 69 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,9 @@ public function renderIndexesViewAction() : Response {
1919
/**
2020
* @see https://docs.mongodb.com/php-library/v1.6/reference/method/MongoDBCollection-insertOne/index.html
2121
*/
22-
public function insertOneAction($databaseName, $collectionName) : Response {
22+
public function insertOneAction() : Response {
2323

2424
$mongoDBClient = MongoDBHelper::getClient();
25-
$collection = $mongoDBClient->selectCollection($databaseName, $collectionName);
2625

2726
$requestBody = $this->getRequestBody();
2827

@@ -36,6 +35,10 @@ public function insertOneAction($databaseName, $collectionName) : Response {
3635
return new Response(400, 'Request body is invalid.');
3736
}
3837

38+
$collection = $mongoDBClient->selectCollection(
39+
$decodedRequestBody['databaseName'], $decodedRequestBody['collectionName']
40+
);
41+
3942
try {
4043
$insertOneResult = $collection->insertOne($decodedRequestBody['document']);
4144
} catch (\Throwable $th) {
@@ -57,10 +60,9 @@ public function insertOneAction($databaseName, $collectionName) : Response {
5760
/**
5861
* @see https://docs.mongodb.com/php-library/v1.6/reference/method/MongoDBCollection-countDocuments/
5962
*/
60-
public function countAction($databaseName, $collectionName) : Response {
63+
public function countAction() : Response {
6164

6265
$mongoDBClient = MongoDBHelper::getClient();
63-
$collection = $mongoDBClient->selectCollection($databaseName, $collectionName);
6466

6567
$requestBody = $this->getRequestBody();
6668

@@ -74,6 +76,10 @@ public function countAction($databaseName, $collectionName) : Response {
7476
return new Response(400, 'Request body is invalid.');
7577
}
7678

79+
$collection = $mongoDBClient->selectCollection(
80+
$decodedRequestBody['databaseName'], $decodedRequestBody['collectionName']
81+
);
82+
7783
if ( isset($decodedRequestBody['filter']['_id'])
7884
&& is_string($decodedRequestBody['filter']['_id']) ) {
7985
$decodedRequestBody['filter']['_id'] =
@@ -99,10 +105,9 @@ public function countAction($databaseName, $collectionName) : Response {
99105
/**
100106
* @see https://docs.mongodb.com/php-library/v1.6/reference/method/MongoDBCollection-deleteOne/index.html
101107
*/
102-
public function deleteOneAction($databaseName, $collectionName) : Response {
108+
public function deleteOneAction() : Response {
103109

104110
$mongoDBClient = MongoDBHelper::getClient();
105-
$collection = $mongoDBClient->selectCollection($databaseName, $collectionName);
106111

107112
$requestBody = $this->getRequestBody();
108113

@@ -116,6 +121,10 @@ public function deleteOneAction($databaseName, $collectionName) : Response {
116121
return new Response(400, 'Request body is invalid.');
117122
}
118123

124+
$collection = $mongoDBClient->selectCollection(
125+
$decodedRequestBody['databaseName'], $decodedRequestBody['collectionName']
126+
);
127+
119128
if ( isset($decodedRequestBody['filter']['_id'])
120129
&& is_string($decodedRequestBody['filter']['_id']) ) {
121130
$decodedRequestBody['filter']['_id'] =
@@ -143,10 +152,9 @@ public function deleteOneAction($databaseName, $collectionName) : Response {
143152
/**
144153
* @see https://docs.mongodb.com/php-library/v1.6/reference/method/MongoDBCollection-find/index.html
145154
*/
146-
public function findAction($databaseName, $collectionName) : Response {
155+
public function findAction() : Response {
147156

148157
$mongoDBClient = MongoDBHelper::getClient();
149-
$collection = $mongoDBClient->selectCollection($databaseName, $collectionName);
150158

151159
$requestBody = $this->getRequestBody();
152160

@@ -160,6 +168,10 @@ public function findAction($databaseName, $collectionName) : Response {
160168
return new Response(400, 'Request body is invalid.');
161169
}
162170

171+
$collection = $mongoDBClient->selectCollection(
172+
$decodedRequestBody['databaseName'], $decodedRequestBody['collectionName']
173+
);
174+
163175
if ( isset($decodedRequestBody['filter']['_id'])
164176
&& is_string($decodedRequestBody['filter']['_id']) ) {
165177
$decodedRequestBody['filter']['_id'] =
@@ -187,10 +199,9 @@ public function findAction($databaseName, $collectionName) : Response {
187199
/**
188200
* @see https://docs.mongodb.com/php-library/v1.6/reference/method/MongoDBCollection-updateOne/index.html
189201
*/
190-
public function updateOneAction($databaseName, $collectionName) : Response {
202+
public function updateOneAction() : Response {
191203

192204
$mongoDBClient = MongoDBHelper::getClient();
193-
$collection = $mongoDBClient->selectCollection($databaseName, $collectionName);
194205

195206
$requestBody = $this->getRequestBody();
196207

@@ -204,6 +215,10 @@ public function updateOneAction($databaseName, $collectionName) : Response {
204215
return new Response(400, 'Request body is invalid.');
205216
}
206217

218+
$collection = $mongoDBClient->selectCollection(
219+
$decodedRequestBody['databaseName'], $decodedRequestBody['collectionName']
220+
);
221+
207222
if ( isset($decodedRequestBody['filter']['_id'])
208223
&& is_string($decodedRequestBody['filter']['_id']) ) {
209224
$decodedRequestBody['filter']['_id'] =
@@ -230,10 +245,25 @@ public function updateOneAction($databaseName, $collectionName) : Response {
230245

231246
}
232247

233-
public function enumFieldsAction($databaseName, $collectionName) : Response {
248+
public function enumFieldsAction() : Response {
234249

235250
$mongoDBClient = MongoDBHelper::getClient();
236-
$collection = $mongoDBClient->selectCollection($databaseName, $collectionName);
251+
252+
$requestBody = $this->getRequestBody();
253+
254+
if ( is_null($requestBody) ) {
255+
return new Response(400, 'Request body is missing.');
256+
}
257+
258+
$decodedRequestBody = json_decode($requestBody, JSON_OBJECT_AS_ARRAY);
259+
260+
if ( is_null($decodedRequestBody) ) {
261+
return new Response(400, 'Request body is invalid.');
262+
}
263+
264+
$collection = $mongoDBClient->selectCollection(
265+
$decodedRequestBody['databaseName'], $decodedRequestBody['collectionName']
266+
);
237267

238268
try {
239269
$documents = $collection->find([], ['limit' => 1])->toArray();
@@ -280,10 +310,9 @@ public function enumFieldsAction($databaseName, $collectionName) : Response {
280310
/**
281311
* @see https://docs.mongodb.com/php-library/v1.6/reference/method/MongoDBCollection-createIndex/index.html
282312
*/
283-
public function createIndexAction($databaseName, $collectionName) : Response {
313+
public function createIndexAction() : Response {
284314

285315
$mongoDBClient = MongoDBHelper::getClient();
286-
$collection = $mongoDBClient->selectCollection($databaseName, $collectionName);
287316

288317
$requestBody = $this->getRequestBody();
289318

@@ -297,6 +326,10 @@ public function createIndexAction($databaseName, $collectionName) : Response {
297326
return new Response(400, 'Request body is invalid.');
298327
}
299328

329+
$collection = $mongoDBClient->selectCollection(
330+
$decodedRequestBody['databaseName'], $decodedRequestBody['collectionName']
331+
);
332+
300333
try {
301334
$createdIndexName = $collection->createIndex(
302335
$decodedRequestBody['key'], $decodedRequestBody['options']
@@ -318,10 +351,25 @@ public function createIndexAction($databaseName, $collectionName) : Response {
318351
/**
319352
* @see https://docs.mongodb.com/php-library/v1.6/reference/method/MongoDBCollection-listIndexes/index.html
320353
*/
321-
public function listIndexesAction($databaseName, $collectionName) : Response {
354+
public function listIndexesAction() : Response {
322355

323356
$mongoDBClient = MongoDBHelper::getClient();
324-
$collection = $mongoDBClient->selectCollection($databaseName, $collectionName);
357+
358+
$requestBody = $this->getRequestBody();
359+
360+
if ( is_null($requestBody) ) {
361+
return new Response(400, 'Request body is missing.');
362+
}
363+
364+
$decodedRequestBody = json_decode($requestBody, JSON_OBJECT_AS_ARRAY);
365+
366+
if ( is_null($decodedRequestBody) ) {
367+
return new Response(400, 'Request body is invalid.');
368+
}
369+
370+
$collection = $mongoDBClient->selectCollection(
371+
$decodedRequestBody['databaseName'], $decodedRequestBody['collectionName']
372+
);
325373

326374
$indexes = [];
327375

@@ -349,10 +397,9 @@ public function listIndexesAction($databaseName, $collectionName) : Response {
349397
/**
350398
* @see https://docs.mongodb.com/php-library/v1.6/reference/method/MongoDBCollection-dropIndex/index.html
351399
*/
352-
public function dropIndexAction($databaseName, $collectionName) : Response {
400+
public function dropIndexAction() : Response {
353401

354402
$mongoDBClient = MongoDBHelper::getClient();
355-
$collection = $mongoDBClient->selectCollection($databaseName, $collectionName);
356403

357404
$requestBody = $this->getRequestBody();
358405

@@ -366,6 +413,10 @@ public function dropIndexAction($databaseName, $collectionName) : Response {
366413
return new Response(400, 'Request body is invalid.');
367414
}
368415

416+
$collection = $mongoDBClient->selectCollection(
417+
$decodedRequestBody['databaseName'], $decodedRequestBody['collectionName']
418+
);
419+
369420
try {
370421
$collection->dropIndex($decodedRequestBody['indexName']);
371422
} catch (\Throwable $th) {

src/Controllers/DatabaseController.php

Lines changed: 42 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -50,16 +50,29 @@ public function renderQueryViewAction() : Response {
5050
/**
5151
* @see https://docs.mongodb.com/php-library/v1.6/reference/method/MongoDBDatabase-listCollections/index.html
5252
*/
53-
public function listCollectionsAction($databaseName) : Response {
53+
public function listCollectionsAction() : Response {
5454

5555
$mongoDBClient = MongoDBHelper::getClient();
56-
$database = $mongoDBClient->selectDatabase($databaseName);
5756

58-
$collectionsNames = [];
57+
$requestBody = $this->getRequestBody();
58+
59+
if ( is_null($requestBody) ) {
60+
return new Response(400, 'Request body is missing.');
61+
}
62+
63+
$decodedRequestBody = json_decode($requestBody, JSON_OBJECT_AS_ARRAY);
64+
65+
if ( is_null($decodedRequestBody) ) {
66+
return new Response(400, 'Request body is invalid.');
67+
}
68+
69+
$database = $mongoDBClient->selectDatabase($decodedRequestBody['databaseName']);
70+
71+
$collectionNames = [];
5972

6073
try {
6174
foreach ($database->listCollections() as $collectionInfo) {
62-
$collectionsNames[] = $collectionInfo['name'];
75+
$collectionNames[] = $collectionInfo['name'];
6376
}
6477
} catch (\Throwable $th) {
6578
return new Response(
@@ -70,20 +83,41 @@ public function listCollectionsAction($databaseName) : Response {
7083
}
7184

7285
return new Response(
73-
200, json_encode($collectionsNames), ['Content-Type' => 'application/json']
86+
200, json_encode($collectionNames), ['Content-Type' => 'application/json']
7487
);
7588

7689
}
7790

7891
/**
7992
* @see https://docs.mongodb.com/php-library/v1.6/reference/method/MongoDBDatabase-createCollection/index.html
8093
*/
81-
public function createCollectionAction($databaseName, $collectionName) : Response {
94+
public function createCollectionAction() : Response {
8295

8396
$mongoDBClient = MongoDBHelper::getClient();
84-
$database = $mongoDBClient->selectDatabase($databaseName);
8597

86-
$database->createCollection($collectionName);
98+
$requestBody = $this->getRequestBody();
99+
100+
if ( is_null($requestBody) ) {
101+
return new Response(400, 'Request body is missing.');
102+
}
103+
104+
$decodedRequestBody = json_decode($requestBody, JSON_OBJECT_AS_ARRAY);
105+
106+
if ( is_null($decodedRequestBody) ) {
107+
return new Response(400, 'Request body is invalid.');
108+
}
109+
110+
$database = $mongoDBClient->selectDatabase($decodedRequestBody['databaseName']);
111+
112+
try {
113+
$database->createCollection($decodedRequestBody['collectionName']);
114+
} catch (\Throwable $th) {
115+
return new Response(
116+
500,
117+
json_encode(ErrorNormalizer::normalize($th, __METHOD__)),
118+
['Content-Type' => 'application/json']
119+
);
120+
}
87121

88122
return new Response(
89123
200, json_encode(true), ['Content-Type' => 'application/json']

0 commit comments

Comments
 (0)