Add scheduled task subscriber entity and repository
[MAILPOET-2898]
This commit is contained in:
committed by
Veljko V
parent
01b61abc28
commit
6ee891a387
@@ -290,6 +290,7 @@ class ContainerConfigurator implements IContainerConfigurator {
|
|||||||
$container->autowire(\MailPoet\Newsletter\Scheduler\WelcomeScheduler::class)->setPublic(true);
|
$container->autowire(\MailPoet\Newsletter\Scheduler\WelcomeScheduler::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Newsletter\Scheduler\PostNotificationScheduler::class);
|
$container->autowire(\MailPoet\Newsletter\Scheduler\PostNotificationScheduler::class);
|
||||||
$container->autowire(\MailPoet\Newsletter\Sending\ScheduledTasksRepository::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\Sending\SendingQueuesRepository::class);
|
||||||
$container->autowire(\MailPoet\Newsletter\ViewInBrowser\ViewInBrowserController::class)->setPublic(true);
|
$container->autowire(\MailPoet\Newsletter\ViewInBrowser\ViewInBrowserController::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Newsletter\ViewInBrowser\ViewInBrowserRenderer::class)->setPublic(true);
|
$container->autowire(\MailPoet\Newsletter\ViewInBrowser\ViewInBrowserRenderer::class)->setPublic(true);
|
||||||
|
116
lib/Entities/ScheduledTaskSubscriberEntity.php
Normal file
116
lib/Entities/ScheduledTaskSubscriberEntity.php
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
@@ -17,6 +17,10 @@ parameters:
|
|||||||
- '#Parameter \#1 \$function of function call_user_func_array expects callable(): mixed, .wc_.*. given.#'
|
- '#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#'
|
- '#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
|
- '/(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)
|
# 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\.#'
|
- '#Method MailPoet\\Doctrine\\Repository::findOneBy(Id)?\(\) should return T of object\|null but returns object\|null\.#'
|
||||||
|
Reference in New Issue
Block a user