Skip to content

Commit

Permalink
Breaking change: Persistence Manager requires a Query instance as arg…
Browse files Browse the repository at this point in the history
…ument

- Change `getObjectCountByQuery()` to require an instance of `QueryInterface`
- Change `getObjectDataByQuery()` to require an instance of `QueryInterface`
  • Loading branch information
cundd committed Dec 19, 2018
1 parent dac8157 commit 52dca42
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 78 deletions.
82 changes: 6 additions & 76 deletions Classes/VirtualObject/Persistence/PersistenceManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public function registerObject($object)
$identifierQuery = $this->getIdentifierColumnsOfObject($object);
if (
$identifierQuery
&& $this->backend->getObjectCountByQuery($this->getSourceIdentifier(), $identifierQuery)
&& $this->backend->getObjectCountByQuery($this->getSourceIdentifier(), new Query($identifierQuery))
) {
$this->update($object);
} else {
Expand All @@ -60,12 +60,6 @@ public function registerObject($object)
return $object;
}

/**
* Adds the given object to the database
*
* @param VirtualObject $object
* @return void
*/
public function add($object)
{
$identifierValue = $this->backend->addRow(
Expand All @@ -76,18 +70,12 @@ public function add($object)
$object->setValueForKey($identifierKey, $identifierValue);
}

/**
* Updates the given object in the database
*
* @param VirtualObject $object
* @return void
*/
public function update($object)
{
$identifierQuery = $this->getIdentifierColumnsOfObject($object);
$sourceIdentifier = $this->getSourceIdentifier();
$backend = $this->backend;
if ($identifierQuery && $backend->getObjectCountByQuery($sourceIdentifier, $identifierQuery)) {
if ($identifierQuery && $backend->getObjectCountByQuery($sourceIdentifier, new Query($identifierQuery))) {
$backend->updateRow(
$sourceIdentifier,
$identifierQuery,
Expand All @@ -96,45 +84,25 @@ public function update($object)
}
}

/**
* Removes the given object from the database
*
* @param VirtualObject $object
* @return void
*/
public function remove($object)
{
$identifierQuery = $this->getIdentifierColumnsOfObject($object);
$sourceIdentifier = $this->getSourceIdentifier();
$backend = $this->backend;
if ($identifierQuery && $backend->getObjectCountByQuery($sourceIdentifier, $identifierQuery)) {
if ($identifierQuery && $backend->getObjectCountByQuery($sourceIdentifier, new Query($identifierQuery))) {
$backend->removeRow(
$sourceIdentifier,
$identifierQuery
);
}
}

/**
* Returns the number of items matching the query
*
* @param QueryInterface|array $query
* @return integer
* @api
*/
public function getObjectCountByQuery($query)
public function getObjectCountByQuery(QueryInterface $query): int
{
return $this->backend->getObjectCountByQuery($this->getSourceIdentifier(), $query);
}

/**
* Returns the object data matching the $query
*
* @param QueryInterface|array $query
* @return array
* @api
*/
public function getObjectDataByQuery($query)
public function getObjectDataByQuery(QueryInterface $query)
{
$objectConverter = $this->getObjectConverter();
$objectCollection = [];
Expand All @@ -147,12 +115,6 @@ public function getObjectDataByQuery($query)
return $objectCollection;
}

/**
* Returns the object with the given identifier
*
* @param string $identifier
* @return VirtualObject
*/
public function getObjectByIdentifier($identifier)
{
$configuration = $this->getConfiguration();
Expand All @@ -162,9 +124,7 @@ public function getObjectByIdentifier($identifier)


$objectConverter = $this->getObjectConverter();
$query = [
$identifierKey => $identifier,
];
$query = new Query([$identifierKey => $identifier]);

$rawObjectCollection = $this->backend->getObjectDataByQuery($this->getSourceIdentifier(), $query);
foreach ($rawObjectCollection as $rawObjectData) {
Expand All @@ -174,12 +134,6 @@ public function getObjectByIdentifier($identifier)
return null;
}

/**
* Returns the array of identifier properties of the object
*
* @param object $object
* @return array
*/
public function getIdentifiersOfObject($object)
{
$objectData = $object->getData();
Expand All @@ -188,12 +142,6 @@ public function getIdentifiersOfObject($object)
return isset($objectData[$identifier]) ? [$identifier => $objectData[$identifier]] : [];
}

/**
* Returns the array of identifier columns and value of the object
*
* @param object $object
* @return array
*/
public function getIdentifierColumnsOfObject($object)
{
$configuration = $this->getConfiguration();
Expand All @@ -204,23 +152,11 @@ public function getIdentifierColumnsOfObject($object)
return isset($objectData[$identifier]) ? [$identifierColumn => $objectData[$identifier]] : [];
}


/**
* Returns the source identifier (the database table name)
*
* @return string
*/
public function getSourceIdentifier()
{
return $this->getConfiguration()->getSourceIdentifier();
}

/**
* Sets the configuration to use when converting
*
* @param \Cundd\Rest\VirtualObject\ConfigurationInterface $configuration
* @return $this
*/
public function setConfiguration($configuration)
{
$this->configuration = $configuration;
Expand All @@ -229,12 +165,6 @@ public function setConfiguration($configuration)
return $this;
}

/**
* Returns the configuration to use when converting
*
* @throws \Cundd\Rest\VirtualObject\Exception\MissingConfigurationException if the configuration is not set
* @return \Cundd\Rest\VirtualObject\ConfigurationInterface
*/
public function getConfiguration()
{
if (!$this->configuration) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ public function registerObject($object);
* @return integer
* @api
*/
public function getObjectCountByQuery($query);
public function getObjectCountByQuery(QueryInterface $query): int;

/**
* Returns the object data matching the $query
Expand All @@ -102,7 +102,7 @@ public function getObjectCountByQuery($query);
* @return array
* @api
*/
public function getObjectDataByQuery($query);
public function getObjectDataByQuery(QueryInterface $query);

/**
* Returns the object with the given identifier
Expand Down

0 comments on commit 52dca42

Please sign in to comment.