Skip to content

Commit

Permalink
Narrow Model API
Browse files Browse the repository at this point in the history
  • Loading branch information
jordisala1991 committed Aug 26, 2020
1 parent 212575d commit 569af00
Show file tree
Hide file tree
Showing 17 changed files with 215 additions and 232 deletions.
12 changes: 2 additions & 10 deletions src/Admin/AbstractAdmin.php
Expand Up @@ -580,11 +580,7 @@ public function update(object $object): object
$extension->preUpdate($this, $object);
}

$result = $this->getModelManager()->update($object);
// BC compatibility
if (null !== $result) {
$object = $result;
}
$this->getModelManager()->update($object);

$this->postUpdate($object);
foreach ($this->extensions as $extension) {
Expand All @@ -601,11 +597,7 @@ public function create(object $object): object
$extension->prePersist($this, $object);
}

$result = $this->getModelManager()->create($object);
// BC compatibility
if (null !== $result) {
$object = $result;
}
$this->getModelManager()->create($object);

$this->postPersist($object);
foreach ($this->extensions as $extension) {
Expand Down
4 changes: 0 additions & 4 deletions src/Form/ChoiceList/ModelChoiceLoader.php
Expand Up @@ -28,8 +28,6 @@
*/
final class ModelChoiceLoader implements ChoiceLoaderInterface
{
public $identifier;

/**
* @var \Sonata\AdminBundle\Model\ModelManagerInterface
*/
Expand Down Expand Up @@ -78,8 +76,6 @@ public function __construct(
$this->query = $query;
$this->choices = $choices;

$this->identifier = $this->modelManager->getIdentifierFieldNames($this->class);

// The property option defines, which property (path) is used for
// displaying entities as strings
if ($property) {
Expand Down
6 changes: 5 additions & 1 deletion src/Form/DataTransformer/ModelToIdPropertyTransformer.php
Expand Up @@ -94,7 +94,11 @@ public function reverseTransform($value)
continue;
}

$collection[] = $this->modelManager->find($this->className, $id);
$object = $this->modelManager->find($this->className, $id);

if (null !== $object) {
$collection[] = $object;
}
}

return $collection;
Expand Down
14 changes: 5 additions & 9 deletions src/Model/AuditManager.php
Expand Up @@ -21,12 +21,8 @@
final class AuditManager implements AuditManagerInterface
{
/**
* @var array
*/
private $classes = [];

/**
* @var array
* @var array<string, string[]>
* @phpstan-var array<string, class-string[]>
*/
private $readers = [];

Expand All @@ -40,12 +36,12 @@ public function __construct(ContainerInterface $container)
$this->container = $container;
}

public function setReader($serviceId, array $classes): void
public function setReader(string $serviceId, array $classes): void
{
$this->readers[$serviceId] = $classes;
}

public function hasReader($class)
public function hasReader(string $class): bool
{
foreach ($this->readers as $classes) {
if (\in_array($class, $classes, true)) {
Expand All @@ -56,7 +52,7 @@ public function hasReader($class)
return false;
}

public function getReader($class)
public function getReader(string $class): AuditReaderInterface
{
foreach ($this->readers as $readerId => $classes) {
if (\in_array($class, $classes, true)) {
Expand Down
18 changes: 8 additions & 10 deletions src/Model/AuditManagerInterface.php
Expand Up @@ -21,27 +21,25 @@ interface AuditManagerInterface
/**
* Set AuditReaderInterface service id for array of $classes.
*
* @param string $serviceId
* @param string[] $classes
*
* @phpstan-param class-string[] $classes
*/
public function setReader($serviceId, array $classes);
public function setReader(string $serviceId, array $classes): void;

/**
* Returns true if $class has AuditReaderInterface.
*
* @param string $class
*
* @return bool
* @phpstan-param class-string $class
*/
public function hasReader($class);
public function hasReader(string $class): bool;

/**
* Get AuditReaderInterface service for $class.
*
* @param string $class
*
* @throws \LogicException
*
* @return AuditReaderInterface
* @phpstan-param class-string $class
*/
public function getReader($class);
public function getReader(string $class): AuditReaderInterface;
}
47 changes: 24 additions & 23 deletions src/Model/AuditReaderInterface.php
Expand Up @@ -19,46 +19,47 @@
interface AuditReaderInterface
{
/**
* @param string $className
* @param string $id
* @param string $revision
* @template T of object
*
* @return object
* @param mixed $id
* @param mixed $revisionId
*
* @phpstan-param class-string<T> $className
* @phpstan-return T|null
*/
public function find($className, $id, $revision);
public function find(string $className, $id, $revisionId): ?object;

/**
* @param string $className
* @param int $limit
* @param int $offset
*
* @return object[]
*
* @phpstan-param class-string $className
*/
public function findRevisionHistory($className, $limit = 20, $offset = 0);
public function findRevisionHistory(string $className, int $limit = 20, int $offset = 0): array;

/**
* @param string $classname
* @param string $revision
* @param mixed $revisionId
*
* @return object
* @phpstan-param class-string $className
*/
public function findRevision($classname, $revision);
public function findRevision(string $className, $revisionId): ?object;

/**
* @param string $className
* @param string $id
* @param mixed $id
*
* @return object[]
*
* @phpstan-param class-string $className
*/
public function findRevisions($className, $id);
public function findRevisions(string $className, $id): array;

/**
* @param string $className
* @param int $id
* @param int $oldRevision
* @param int $newRevision
* @param mixed $id
* @param mixed $oldRevisionId
* @param mixed $newRevisionId
*
* @return array<string, array{old: mixed, new: mixed, same: mixed}>
*
* @return array
* @phpstan-param class-string $className
*/
public function diff($className, $id, $oldRevision, $newRevision);
public function diff(string $className, $id, $oldRevisionId, $newRevisionId): array;
}
10 changes: 6 additions & 4 deletions src/Model/DatagridManagerInterface.php
Expand Up @@ -21,16 +21,18 @@ interface DatagridManagerInterface
/**
* Return _sort_order, _sort_by, _page and _per_page values.
*
* @param string $class
*
* @return array<string, int|string>
*
* @phpstan-param class-string $class
*/
public function getDefaultSortValues($class);
public function getDefaultSortValues(string $class): array;

/**
* Return all the allowed _per_page values.
*
* @return array<int>
* @return int[]
*
* @phpstan-param class-string $class
*/
public function getDefaultPerPageOptions(string $class): array;
}
11 changes: 3 additions & 8 deletions src/Model/LockInterface.php
Expand Up @@ -21,17 +21,12 @@
interface LockInterface extends ModelManagerInterface
{
/**
* @param object $object
*
* @return mixed|null
* @return mixed
*/
public function getLockVersion($object);
public function getLockVersion(object $object);

/**
* @param object $object
* @param mixed $expectedVersion
*
* @throws LockException
*/
public function lock($object, $expectedVersion);
public function lock(object $object, ?int $expectedVersion): void;
}

0 comments on commit 569af00

Please sign in to comment.