Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
M
mongo-php-library
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sinan
mongo-php-library
Commits
573f1e75
Commit
573f1e75
authored
Jan 20, 2016
by
Jeremy Mikola
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
PHPLIB-164: Drop operations should use type map
parent
1ea44f91
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
179 additions
and
26 deletions
+179
-26
Client.php
src/Client.php
+10
-4
Collection.php
src/Collection.php
+27
-9
Database.php
src/Database.php
+19
-7
DropCollection.php
src/Operation/DropCollection.php
+20
-2
DropDatabase.php
src/Operation/DropDatabase.php
+14
-2
DropIndexes.php
src/Operation/DropIndexes.php
+13
-2
DropCollectionTest.php
tests/Operation/DropCollectionTest.php
+28
-0
DropDatabaseTest.php
tests/Operation/DropDatabaseTest.php
+28
-0
DropIndexesTest.php
tests/Operation/DropIndexesTest.php
+20
-0
No files found.
src/Client.php
View file @
573f1e75
...
@@ -103,12 +103,18 @@ class Client
...
@@ -103,12 +103,18 @@ class Client
/**
/**
* Drop a database.
* Drop a database.
*
*
* @param string $databaseName
* @see DropDatabase::__construct() for supported options
* @return object Command result document
* @param string $databaseName Database name
* @param array $options Additional options
* @return array|object Command result document
*/
*/
public
function
dropDatabase
(
$databaseName
)
public
function
dropDatabase
(
$databaseName
,
array
$options
=
[]
)
{
{
$operation
=
new
DropDatabase
(
$databaseName
);
if
(
!
isset
(
$options
[
'typeMap'
]))
{
$options
[
'typeMap'
]
=
$this
->
typeMap
;
}
$operation
=
new
DropDatabase
(
$databaseName
,
$options
);
$server
=
$this
->
manager
->
selectServer
(
new
ReadPreference
(
ReadPreference
::
RP_PRIMARY
));
$server
=
$this
->
manager
->
selectServer
(
new
ReadPreference
(
ReadPreference
::
RP_PRIMARY
));
return
$operation
->
execute
(
$server
);
return
$operation
->
execute
(
$server
);
...
...
src/Collection.php
View file @
573f1e75
...
@@ -340,11 +340,17 @@ class Collection
...
@@ -340,11 +340,17 @@ class Collection
/**
/**
* Drop this collection.
* Drop this collection.
*
*
* @return object Command result document
* @see DropCollection::__construct() for supported options
* @param array $options Additional options
* @return array|object Command result document
*/
*/
public
function
drop
()
public
function
drop
(
array
$options
=
[]
)
{
{
$operation
=
new
DropCollection
(
$this
->
databaseName
,
$this
->
collectionName
);
if
(
!
isset
(
$options
[
'typeMap'
]))
{
$options
[
'typeMap'
]
=
$this
->
typeMap
;
}
$operation
=
new
DropCollection
(
$this
->
databaseName
,
$this
->
collectionName
,
$options
);
$server
=
$this
->
manager
->
selectServer
(
new
ReadPreference
(
ReadPreference
::
RP_PRIMARY
));
$server
=
$this
->
manager
->
selectServer
(
new
ReadPreference
(
ReadPreference
::
RP_PRIMARY
));
return
$operation
->
execute
(
$server
);
return
$operation
->
execute
(
$server
);
...
@@ -353,11 +359,13 @@ class Collection
...
@@ -353,11 +359,13 @@ class Collection
/**
/**
* Drop a single index in the collection.
* Drop a single index in the collection.
*
*
* @see DropIndexes::__construct() for supported options
* @param string $indexName Index name
* @param string $indexName Index name
* @return object Command result document
* @param array $options Additional options
* @return array|object Command result document
* @throws InvalidArgumentException if $indexName is an empty string or "*"
* @throws InvalidArgumentException if $indexName is an empty string or "*"
*/
*/
public
function
dropIndex
(
$indexName
)
public
function
dropIndex
(
$indexName
,
array
$options
=
[]
)
{
{
$indexName
=
(
string
)
$indexName
;
$indexName
=
(
string
)
$indexName
;
...
@@ -365,7 +373,11 @@ class Collection
...
@@ -365,7 +373,11 @@ class Collection
throw
new
InvalidArgumentException
(
'dropIndexes() must be used to drop multiple indexes'
);
throw
new
InvalidArgumentException
(
'dropIndexes() must be used to drop multiple indexes'
);
}
}
$operation
=
new
DropIndexes
(
$this
->
databaseName
,
$this
->
collectionName
,
$indexName
);
if
(
!
isset
(
$options
[
'typeMap'
]))
{
$options
[
'typeMap'
]
=
$this
->
typeMap
;
}
$operation
=
new
DropIndexes
(
$this
->
databaseName
,
$this
->
collectionName
,
$indexName
,
$options
);
$server
=
$this
->
manager
->
selectServer
(
new
ReadPreference
(
ReadPreference
::
RP_PRIMARY
));
$server
=
$this
->
manager
->
selectServer
(
new
ReadPreference
(
ReadPreference
::
RP_PRIMARY
));
return
$operation
->
execute
(
$server
);
return
$operation
->
execute
(
$server
);
...
@@ -374,11 +386,17 @@ class Collection
...
@@ -374,11 +386,17 @@ class Collection
/**
/**
* Drop all indexes in the collection.
* Drop all indexes in the collection.
*
*
* @return object Command result document
* @see DropIndexes::__construct() for supported options
* @param array $options Additional options
* @return array|object Command result document
*/
*/
public
function
dropIndexes
()
public
function
dropIndexes
(
array
$options
=
[]
)
{
{
$operation
=
new
DropIndexes
(
$this
->
databaseName
,
$this
->
collectionName
,
'*'
);
if
(
!
isset
(
$options
[
'typeMap'
]))
{
$options
[
'typeMap'
]
=
$this
->
typeMap
;
}
$operation
=
new
DropIndexes
(
$this
->
databaseName
,
$this
->
collectionName
,
'*'
,
$options
);
$server
=
$this
->
manager
->
selectServer
(
new
ReadPreference
(
ReadPreference
::
RP_PRIMARY
));
$server
=
$this
->
manager
->
selectServer
(
new
ReadPreference
(
ReadPreference
::
RP_PRIMARY
));
return
$operation
->
execute
(
$server
);
return
$operation
->
execute
(
$server
);
...
...
src/Database.php
View file @
573f1e75
...
@@ -173,11 +173,17 @@ class Database
...
@@ -173,11 +173,17 @@ class Database
/**
/**
* Drop this database.
* Drop this database.
*
*
* @return object Command result document
* @see DropDatabase::__construct() for supported options
* @param array $options Additional options
* @return array|object Command result document
*/
*/
public
function
drop
()
public
function
drop
(
array
$options
=
[]
)
{
{
$operation
=
new
DropDatabase
(
$this
->
databaseName
);
if
(
!
isset
(
$options
[
'typeMap'
]))
{
$options
[
'typeMap'
]
=
$this
->
typeMap
;
}
$operation
=
new
DropDatabase
(
$this
->
databaseName
,
$options
);
$server
=
$this
->
manager
->
selectServer
(
new
ReadPreference
(
ReadPreference
::
RP_PRIMARY
));
$server
=
$this
->
manager
->
selectServer
(
new
ReadPreference
(
ReadPreference
::
RP_PRIMARY
));
return
$operation
->
execute
(
$server
);
return
$operation
->
execute
(
$server
);
...
@@ -186,12 +192,18 @@ class Database
...
@@ -186,12 +192,18 @@ class Database
/**
/**
* Drop a collection within this database.
* Drop a collection within this database.
*
*
* @param string $collectionName
* @see DropCollection::__construct() for supported options
* @return object Command result document
* @param string $collectionName Collection name
* @param array $options Additional options
* @return array|object Command result document
*/
*/
public
function
dropCollection
(
$collectionName
)
public
function
dropCollection
(
$collectionName
,
array
$options
=
[]
)
{
{
$operation
=
new
DropCollection
(
$this
->
databaseName
,
$collectionName
);
if
(
!
isset
(
$options
[
'typeMap'
]))
{
$options
[
'typeMap'
]
=
$this
->
typeMap
;
}
$operation
=
new
DropCollection
(
$this
->
databaseName
,
$collectionName
,
$options
);
$server
=
$this
->
manager
->
selectServer
(
new
ReadPreference
(
ReadPreference
::
RP_PRIMARY
));
$server
=
$this
->
manager
->
selectServer
(
new
ReadPreference
(
ReadPreference
::
RP_PRIMARY
));
return
$operation
->
execute
(
$server
);
return
$operation
->
execute
(
$server
);
...
...
src/Operation/DropCollection.php
View file @
573f1e75
...
@@ -5,6 +5,7 @@ namespace MongoDB\Operation;
...
@@ -5,6 +5,7 @@ namespace MongoDB\Operation;
use
MongoDB\Driver\Command
;
use
MongoDB\Driver\Command
;
use
MongoDB\Driver\Server
;
use
MongoDB\Driver\Server
;
use
MongoDB\Driver\Exception\RuntimeException
;
use
MongoDB\Driver\Exception\RuntimeException
;
use
MongoDB\Exception\InvalidArgumentException
;
/**
/**
* Operation for the drop command.
* Operation for the drop command.
...
@@ -17,19 +18,32 @@ use MongoDB\Driver\Exception\RuntimeException;
...
@@ -17,19 +18,32 @@ use MongoDB\Driver\Exception\RuntimeException;
class
DropCollection
implements
Executable
class
DropCollection
implements
Executable
{
{
private
static
$errorMessageNamespaceNotFound
=
'ns not found'
;
private
static
$errorMessageNamespaceNotFound
=
'ns not found'
;
private
$databaseName
;
private
$databaseName
;
private
$collectionName
;
private
$collectionName
;
private
$options
;
/**
/**
* Constructs a drop command.
* Constructs a drop command.
*
*
* Supported options:
*
* * typeMap (array): Type map for BSON deserialization. This will be used
* for the returned command result document.
*
* @param string $databaseName Database name
* @param string $databaseName Database name
* @param string $collectionName Collection name
* @param string $collectionName Collection name
* @param array $options Command options
*/
*/
public
function
__construct
(
$databaseName
,
$collectionName
)
public
function
__construct
(
$databaseName
,
$collectionName
,
array
$options
=
[]
)
{
{
if
(
isset
(
$options
[
'typeMap'
])
&&
!
is_array
(
$options
[
'typeMap'
]))
{
throw
InvalidArgumentException
::
invalidType
(
'"typeMap" option'
,
$options
[
'typeMap'
],
'array'
);
}
$this
->
databaseName
=
(
string
)
$databaseName
;
$this
->
databaseName
=
(
string
)
$databaseName
;
$this
->
collectionName
=
(
string
)
$collectionName
;
$this
->
collectionName
=
(
string
)
$collectionName
;
$this
->
options
=
$options
;
}
}
/**
/**
...
@@ -37,7 +51,7 @@ class DropCollection implements Executable
...
@@ -37,7 +51,7 @@ class DropCollection implements Executable
*
*
* @see Executable::execute()
* @see Executable::execute()
* @param Server $server
* @param Server $server
* @return object Command result document
* @return
array|
object Command result document
*/
*/
public
function
execute
(
Server
$server
)
public
function
execute
(
Server
$server
)
{
{
...
@@ -55,6 +69,10 @@ class DropCollection implements Executable
...
@@ -55,6 +69,10 @@ class DropCollection implements Executable
throw
$e
;
throw
$e
;
}
}
if
(
isset
(
$this
->
options
[
'typeMap'
]))
{
$cursor
->
setTypeMap
(
$this
->
options
[
'typeMap'
]);
}
return
current
(
$cursor
->
toArray
());
return
current
(
$cursor
->
toArray
());
}
}
}
}
src/Operation/DropDatabase.php
View file @
573f1e75
...
@@ -4,6 +4,7 @@ namespace MongoDB\Operation;
...
@@ -4,6 +4,7 @@ namespace MongoDB\Operation;
use
MongoDB\Driver\Command
;
use
MongoDB\Driver\Command
;
use
MongoDB\Driver\Server
;
use
MongoDB\Driver\Server
;
use
MongoDB\Exception\InvalidArgumentException
;
/**
/**
* Operation for the dropDatabase command.
* Operation for the dropDatabase command.
...
@@ -16,15 +17,22 @@ use MongoDB\Driver\Server;
...
@@ -16,15 +17,22 @@ use MongoDB\Driver\Server;
class
DropDatabase
implements
Executable
class
DropDatabase
implements
Executable
{
{
private
$databaseName
;
private
$databaseName
;
private
$options
;
/**
/**
* Constructs a dropDatabase command.
* Constructs a dropDatabase command.
*
*
* @param string $databaseName Database name
* @param string $databaseName Database name
* @param array $options Command options
*/
*/
public
function
__construct
(
$databaseName
)
public
function
__construct
(
$databaseName
,
array
$options
=
[]
)
{
{
if
(
isset
(
$options
[
'typeMap'
])
&&
!
is_array
(
$options
[
'typeMap'
]))
{
throw
InvalidArgumentException
::
invalidType
(
'"typeMap" option'
,
$options
[
'typeMap'
],
'array'
);
}
$this
->
databaseName
=
(
string
)
$databaseName
;
$this
->
databaseName
=
(
string
)
$databaseName
;
$this
->
options
=
$options
;
}
}
/**
/**
...
@@ -32,12 +40,16 @@ class DropDatabase implements Executable
...
@@ -32,12 +40,16 @@ class DropDatabase implements Executable
*
*
* @see Executable::execute()
* @see Executable::execute()
* @param Server $server
* @param Server $server
* @return object Command result document
* @return
array|
object Command result document
*/
*/
public
function
execute
(
Server
$server
)
public
function
execute
(
Server
$server
)
{
{
$cursor
=
$server
->
executeCommand
(
$this
->
databaseName
,
new
Command
([
'dropDatabase'
=>
1
]));
$cursor
=
$server
->
executeCommand
(
$this
->
databaseName
,
new
Command
([
'dropDatabase'
=>
1
]));
if
(
isset
(
$this
->
options
[
'typeMap'
]))
{
$cursor
->
setTypeMap
(
$this
->
options
[
'typeMap'
]);
}
return
current
(
$cursor
->
toArray
());
return
current
(
$cursor
->
toArray
());
}
}
}
}
src/Operation/DropIndexes.php
View file @
573f1e75
...
@@ -18,6 +18,7 @@ class DropIndexes implements Executable
...
@@ -18,6 +18,7 @@ class DropIndexes implements Executable
private
$databaseName
;
private
$databaseName
;
private
$collectionName
;
private
$collectionName
;
private
$indexName
;
private
$indexName
;
private
$options
;
/**
/**
* Constructs a dropIndexes command.
* Constructs a dropIndexes command.
...
@@ -25,9 +26,10 @@ class DropIndexes implements Executable
...
@@ -25,9 +26,10 @@ class DropIndexes implements Executable
* @param string $databaseName Database name
* @param string $databaseName Database name
* @param string $collectionName Collection name
* @param string $collectionName Collection name
* @param string $indexName Index name (use "*" to drop all indexes)
* @param string $indexName Index name (use "*" to drop all indexes)
* @param array $options Command options
* @throws InvalidArgumentException
* @throws InvalidArgumentException
*/
*/
public
function
__construct
(
$databaseName
,
$collectionName
,
$indexName
)
public
function
__construct
(
$databaseName
,
$collectionName
,
$indexName
,
array
$options
=
[]
)
{
{
$indexName
=
(
string
)
$indexName
;
$indexName
=
(
string
)
$indexName
;
...
@@ -35,9 +37,14 @@ class DropIndexes implements Executable
...
@@ -35,9 +37,14 @@ class DropIndexes implements Executable
throw
new
InvalidArgumentException
(
'$indexName cannot be empty'
);
throw
new
InvalidArgumentException
(
'$indexName cannot be empty'
);
}
}
if
(
isset
(
$options
[
'typeMap'
])
&&
!
is_array
(
$options
[
'typeMap'
]))
{
throw
InvalidArgumentException
::
invalidType
(
'"typeMap" option'
,
$options
[
'typeMap'
],
'array'
);
}
$this
->
databaseName
=
(
string
)
$databaseName
;
$this
->
databaseName
=
(
string
)
$databaseName
;
$this
->
collectionName
=
(
string
)
$collectionName
;
$this
->
collectionName
=
(
string
)
$collectionName
;
$this
->
indexName
=
$indexName
;
$this
->
indexName
=
$indexName
;
$this
->
options
=
$options
;
}
}
/**
/**
...
@@ -45,7 +52,7 @@ class DropIndexes implements Executable
...
@@ -45,7 +52,7 @@ class DropIndexes implements Executable
*
*
* @see Executable::execute()
* @see Executable::execute()
* @param Server $server
* @param Server $server
* @return object Command result document
* @return
array|
object Command result document
*/
*/
public
function
execute
(
Server
$server
)
public
function
execute
(
Server
$server
)
{
{
...
@@ -56,6 +63,10 @@ class DropIndexes implements Executable
...
@@ -56,6 +63,10 @@ class DropIndexes implements Executable
$cursor
=
$server
->
executeCommand
(
$this
->
databaseName
,
new
Command
(
$cmd
));
$cursor
=
$server
->
executeCommand
(
$this
->
databaseName
,
new
Command
(
$cmd
));
if
(
isset
(
$this
->
options
[
'typeMap'
]))
{
$cursor
->
setTypeMap
(
$this
->
options
[
'typeMap'
]);
}
return
current
(
$cursor
->
toArray
());
return
current
(
$cursor
->
toArray
());
}
}
}
}
tests/Operation/DropCollectionTest.php
0 → 100644
View file @
573f1e75
<?php
namespace
MongoDB\Tests\Operation
;
use
MongoDB\Operation\DropCollection
;
class
DropCollectionTest
extends
TestCase
{
/**
* @expectedException MongoDB\Exception\InvalidArgumentException
* @dataProvider provideInvalidConstructorOptions
*/
public
function
testConstructorOptionTypeChecks
(
array
$options
)
{
new
DropCollection
(
$this
->
getDatabaseName
(),
$this
->
getCollectionName
(),
$options
);
}
public
function
provideInvalidConstructorOptions
()
{
$options
=
[];
foreach
(
$this
->
getInvalidArrayValues
()
as
$value
)
{
$options
[][]
=
[
'typeMap'
=>
$value
];
}
return
$options
;
}
}
tests/Operation/DropDatabaseTest.php
0 → 100644
View file @
573f1e75
<?php
namespace
MongoDB\Tests\Operation
;
use
MongoDB\Operation\DropDatabase
;
class
DropDatabaseTest
extends
TestCase
{
/**
* @expectedException MongoDB\Exception\InvalidArgumentException
* @dataProvider provideInvalidConstructorOptions
*/
public
function
testConstructorOptionTypeChecks
(
array
$options
)
{
new
DropDatabase
(
$this
->
getDatabaseName
(),
$options
);
}
public
function
provideInvalidConstructorOptions
()
{
$options
=
[];
foreach
(
$this
->
getInvalidArrayValues
()
as
$value
)
{
$options
[][]
=
[
'typeMap'
=>
$value
];
}
return
$options
;
}
}
tests/Operation/DropIndexesTest.php
View file @
573f1e75
...
@@ -13,4 +13,24 @@ class DropIndexesTest extends TestCase
...
@@ -13,4 +13,24 @@ class DropIndexesTest extends TestCase
{
{
new
DropIndexes
(
$this
->
getDatabaseName
(),
$this
->
getCollectionName
(),
''
);
new
DropIndexes
(
$this
->
getDatabaseName
(),
$this
->
getCollectionName
(),
''
);
}
}
/**
* @expectedException MongoDB\Exception\InvalidArgumentException
* @dataProvider provideInvalidConstructorOptions
*/
public
function
testConstructorOptionTypeChecks
(
array
$options
)
{
new
DropIndexes
(
$this
->
getDatabaseName
(),
$this
->
getCollectionName
(),
'*'
,
$options
);
}
public
function
provideInvalidConstructorOptions
()
{
$options
=
[];
foreach
(
$this
->
getInvalidArrayValues
()
as
$value
)
{
$options
[][]
=
[
'typeMap'
=>
$value
];
}
return
$options
;
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment