Add scheduled task subscriber entity and repository

[MAILPOET-2898]
This commit is contained in:
Rostislav Wolny
2020-06-08 17:27:33 +02:00
committed by Veljko V
parent 01b61abc28
commit 6ee891a387
4 changed files with 136 additions and 0 deletions

View File

@@ -290,6 +290,7 @@ class ContainerConfigurator implements IContainerConfigurator {
$container->autowire(\MailPoet\Newsletter\Scheduler\WelcomeScheduler::class)->setPublic(true);
$container->autowire(\MailPoet\Newsletter\Scheduler\PostNotificationScheduler::class);
$container->autowire(\MailPoet\Newsletter\Sending\ScheduledTasksRepository::class);
$container->autowire(\MailPoet\Newsletter\Sending\ScheduledTaskSubscribersRepository::class)->setPublic(true);
$container->autowire(\MailPoet\Newsletter\Sending\SendingQueuesRepository::class);
$container->autowire(\MailPoet\Newsletter\ViewInBrowser\ViewInBrowserController::class)->setPublic(true);
$container->autowire(\MailPoet\Newsletter\ViewInBrowser\ViewInBrowserRenderer::class)->setPublic(true);

View File

@@ -0,0 +1,116 @@
<?php
namespace MailPoet\Entities;
use MailPoet\Doctrine\EntityTraits\CreatedAtTrait;
use MailPoet\Doctrine\EntityTraits\SafeToOneAssociationLoadTrait;
use MailPoet\Doctrine\EntityTraits\UpdatedAtTrait;
use MailPoetVendor\Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity()
* @ORM\Table(name="scheduled_task_subscribers")
*/
class ScheduledTaskSubscriberEntity {
use CreatedAtTrait;
use UpdatedAtTrait;
use SafeToOneAssociationLoadTrait;
/**
* @ORM\Column(type="integer")
* @var int
*/
private $processed;
/**
* @ORM\Column(type="integer")
* @var int
*/
private $failed;
/**
* @ORM\Column(type="text", nullable=true)
* @var string|null
*/
private $error;
/**
* @ORM\Id @ORM\ManyToOne(targetEntity="MailPoet\Entities\ScheduledTaskEntity")
* @var ScheduledTaskEntity|null
*/
private $task;
/**
* @ORM\Id @ORM\ManyToOne(targetEntity="MailPoet\Entities\SubscriberEntity")
* @var SubscriberEntity|null
*/
private $subscriber;
public function __construct(
ScheduledTaskEntity $task,
SubscriberEntity $subscriber,
int $processed = 0,
int $failed = 0,
string $error = null
) {
$this->task = $task;
$this->subscriber = $subscriber;
$this->processed = $processed;
$this->failed = $failed;
$this->error = $error;
}
public function getProcessed(): int {
return $this->processed;
}
public function setProcessed(int $processed) {
$this->processed = $processed;
}
public function getFailed(): int {
return $this->failed;
}
public function setFailed(int $failed) {
$this->failed = $failed;
}
/**
* @return string|null
*/
public function getError() {
return $this->error;
}
/**
* @param string|null $error
*/
public function setError($error) {
$this->error = $error;
}
/**
* @return ScheduledTaskEntity|null
*/
public function getTask() {
$this->safelyLoadToOneAssociation('task');
return $this->task;
}
public function setTask(ScheduledTaskEntity $task) {
$this->task = $task;
}
/**
* @return SubscriberEntity|null
*/
public function getSubscriber() {
$this->safelyLoadToOneAssociation('subscriber');
return $this->subscriber;
}
public function setSubscriber(SubscriberEntity $subscriber) {
$this->subscriber = $subscriber;
}
}

View File

@@ -0,0 +1,15 @@
<?php
namespace MailPoet\Newsletter\Sending;
use MailPoet\Doctrine\Repository;
use MailPoet\Entities\ScheduledTaskSubscriberEntity;
/**
* @extends Repository<ScheduledTaskSubscriberEntity>
*/
class ScheduledTaskSubscribersRepository extends Repository {
protected function getEntityClassName() {
return ScheduledTaskSubscriberEntity::class;
}
}

View File

@@ -17,6 +17,10 @@ parameters:
- '#Parameter \#1 \$function of function call_user_func_array expects callable(): mixed, .wc_.*. given.#'
- '#Parameter \#1 \$reader of class MailPoetVendor\\Doctrine\\ORM\\Mapping\\Driver\\AnnotationDriver constructor expects MailPoetVendor\\Doctrine\\Common\\Annotations\\AnnotationReader, MailPoetVendor\\Doctrine\\Common\\Annotations\\CachedReader given#'
- '/(with|has) no (return )?typehint specified/' # exclude level 6 errors
- # Primary keys ScheduledTaskSubscriberEntity of are foreign keys and foreign keys may be null because of missing related record
message: '#Property MailPoet\\Entities\\[a-zA-Z]+::$[a-z]+ type mapping mismatch: property can contain MailPoet\\Entities\\[a-zA-Z]+|null but database expects MailPoet\\Entities\\[a-zA-Z]+.#'
path: ../../lib/Entities/ScheduledTaskSubscriberEntity.php
count: 2
# Doctrine repository annotates return values as object|null, we override them to specific generics (T|null)
- '#Method MailPoet\\Doctrine\\Repository::findOneBy(Id)?\(\) should return T of object\|null but returns object\|null\.#'