Spaces:
No application file
No application file
declare(strict_types=1); | |
namespace Mautic\IntegrationsBundle\Entity; | |
use Doctrine\DBAL\Types\Types; | |
use Doctrine\ORM\Mapping as ORM; | |
use Mautic\CoreBundle\Doctrine\Mapping\ClassMetadataBuilder; | |
class ObjectMapping | |
{ | |
/** | |
* @var int | |
*/ | |
private $id; | |
private ?\DateTimeInterface $dateCreated; | |
/** | |
* @var string | |
*/ | |
private $integration; | |
/** | |
* @var string | |
*/ | |
private $internalObjectName; | |
/** | |
* @var string | |
*/ | |
private $internalObjectId; | |
/** | |
* @var string | |
*/ | |
private $integrationObjectName; | |
/** | |
* @var string | |
*/ | |
private $integrationObjectId; | |
private ?\DateTimeInterface $lastSyncDate; | |
/** | |
* @var array | |
*/ | |
private $internalStorage = []; | |
/** | |
* @var bool | |
*/ | |
private $isDeleted = false; | |
/** | |
* @var string|null | |
*/ | |
private $integrationReferenceId; | |
public static function loadMetadata(ORM\ClassMetadata $metadata): void | |
{ | |
$builder = new ClassMetadataBuilder($metadata); | |
$builder | |
->setTable('sync_object_mapping') | |
->setCustomRepositoryClass(ObjectMappingRepository::class) | |
->addIndex(['integration', 'integration_object_name', 'integration_object_id', 'integration_reference_id'], 'integration_object') | |
->addIndex(['integration', 'integration_object_name', 'integration_reference_id', 'integration_object_id'], 'integration_reference') | |
->addIndex(['integration', 'internal_object_name', 'last_sync_date'], 'integration_integration_object_name_last_sync_date') | |
->addIndex(['integration', 'last_sync_date'], 'integration_last_sync_date'); | |
$builder->addId(); | |
$builder | |
->createField('dateCreated', Types::DATETIME_MUTABLE) | |
->columnName('date_created') | |
->build(); | |
$builder | |
->createField('integration', Types::STRING) | |
->build(); | |
$builder | |
->createField('internalObjectName', Types::STRING) | |
->columnName('internal_object_name') | |
->build(); | |
$builder->addBigIntIdField('internalObjectId', 'internal_object_id', false); | |
$builder | |
->createField('integrationObjectName', Types::STRING) | |
->columnName('integration_object_name') | |
->build(); | |
// Must be a string as not all IDs are integer based | |
$builder | |
->createField('integrationObjectId', Types::STRING) | |
->columnName('integration_object_id') | |
->build(); | |
$builder | |
->createField('lastSyncDate', Types::DATETIME_MUTABLE) | |
->columnName('last_sync_date') | |
->build(); | |
$builder | |
->createField('internalStorage', Types::JSON) | |
->columnName('internal_storage') | |
->build(); | |
$builder | |
->createField('isDeleted', Types::BOOLEAN) | |
->columnName('is_deleted') | |
->build(); | |
$builder | |
->createField('integrationReferenceId', Types::STRING) | |
->columnName('integration_reference_id') | |
->nullable() | |
->build(); | |
} | |
/** | |
* @throws \Exception | |
*/ | |
public function __construct(?\DateTime $dateCreated = null) | |
{ | |
if (null === $dateCreated) { | |
$dateCreated = new \DateTime(); | |
} | |
$this->dateCreated = $dateCreated; | |
$this->lastSyncDate = $dateCreated; | |
} | |
/** | |
* @return int|null ?int | |
*/ | |
public function getId() | |
{ | |
return $this->id; | |
} | |
/** | |
* @param int $id | |
* | |
* @return ObjectMapping | |
*/ | |
public function setId($id) | |
{ | |
$this->id = $id; | |
return $this; | |
} | |
/** | |
* @return \DateTimeInterface|null | |
*/ | |
public function getDateCreated() | |
{ | |
return $this->dateCreated; | |
} | |
/** | |
* @return string | |
*/ | |
public function getIntegration() | |
{ | |
return $this->integration; | |
} | |
/** | |
* @param string $integration | |
* | |
* @return ObjectMapping | |
*/ | |
public function setIntegration($integration) | |
{ | |
$this->integration = $integration; | |
return $this; | |
} | |
/** | |
* @return string | |
*/ | |
public function getInternalObjectName() | |
{ | |
return $this->internalObjectName; | |
} | |
/** | |
* @param string $internalObjectName | |
* | |
* @return ObjectMapping | |
*/ | |
public function setInternalObjectName($internalObjectName) | |
{ | |
$this->internalObjectName = $internalObjectName; | |
return $this; | |
} | |
public function getInternalObjectId(): int | |
{ | |
return (int) $this->internalObjectId; | |
} | |
/** | |
* @param int $internalObjectId | |
* | |
* @return ObjectMapping | |
*/ | |
public function setInternalObjectId($internalObjectId) | |
{ | |
$this->internalObjectId = (string) $internalObjectId; | |
return $this; | |
} | |
/** | |
* @return string | |
*/ | |
public function getIntegrationObjectName() | |
{ | |
return $this->integrationObjectName; | |
} | |
/** | |
* @param string $integrationObjectName | |
* | |
* @return ObjectMapping | |
*/ | |
public function setIntegrationObjectName($integrationObjectName) | |
{ | |
$this->integrationObjectName = $integrationObjectName; | |
return $this; | |
} | |
/** | |
* @return string | |
*/ | |
public function getIntegrationObjectId() | |
{ | |
return $this->integrationObjectId; | |
} | |
/** | |
* @param string $integrationObjectId | |
* | |
* @return ObjectMapping | |
*/ | |
public function setIntegrationObjectId($integrationObjectId) | |
{ | |
$this->integrationObjectId = $integrationObjectId; | |
return $this; | |
} | |
/** | |
* @return \DateTimeInterface | |
*/ | |
public function getLastSyncDate() | |
{ | |
return $this->lastSyncDate; | |
} | |
/** | |
* @param \DateTimeInterface|null $lastSyncDate | |
* | |
* @return ObjectMapping | |
* | |
* @throws \Exception | |
*/ | |
public function setLastSyncDate($lastSyncDate) | |
{ | |
if (null === $lastSyncDate) { | |
$lastSyncDate = new \DateTime(); | |
} | |
$this->lastSyncDate = $lastSyncDate; | |
return $this; | |
} | |
/** | |
* @return array | |
*/ | |
public function getInternalStorage() | |
{ | |
return $this->internalStorage; | |
} | |
/** | |
* @param array $internalStorage | |
* | |
* @return ObjectMapping | |
*/ | |
public function setInternalStorage($internalStorage) | |
{ | |
$this->internalStorage = $internalStorage; | |
return $this; | |
} | |
/** | |
* @return $this | |
*/ | |
public function appendToInternalStorage($key, $value) | |
{ | |
$this->internalStorage[$key] = $value; | |
return $this; | |
} | |
/** | |
* @return bool | |
*/ | |
public function isDeleted() | |
{ | |
return $this->isDeleted; | |
} | |
/** | |
* @param bool $isDeleted | |
* | |
* @return ObjectMapping | |
*/ | |
public function setIsDeleted($isDeleted) | |
{ | |
$this->isDeleted = $isDeleted; | |
return $this; | |
} | |
/** | |
* @return string|null | |
*/ | |
public function getIntegrationReferenceId() | |
{ | |
return $this->integrationReferenceId; | |
} | |
/** | |
* @param string|null $integrationReferenceId | |
* | |
* @return ObjectMapping | |
*/ | |
public function setIntegrationReferenceId($integrationReferenceId) | |
{ | |
$this->integrationReferenceId = $integrationReferenceId; | |
return $this; | |
} | |
} | |