195 lines
3.9 KiB
PHP
Executable File
195 lines
3.9 KiB
PHP
Executable File
<?php
|
|
|
|
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 FieldChange
|
|
{
|
|
/**
|
|
* @var int
|
|
*/
|
|
private $id;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
private $integration;
|
|
|
|
/**
|
|
* @var int|string
|
|
*/
|
|
private $objectId;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
private $objectType;
|
|
|
|
/**
|
|
* @var \DateTimeInterface
|
|
*/
|
|
private $modifiedAt;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
private $columnName;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
private $columnType;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
private $columnValue;
|
|
|
|
public static function loadMetadata(ORM\ClassMetadata $metadata): void
|
|
{
|
|
$builder = new ClassMetadataBuilder($metadata);
|
|
|
|
$builder
|
|
->setTable('sync_object_field_change_report')
|
|
->setCustomRepositoryClass(FieldChangeRepository::class)
|
|
->addIndex(['object_type', 'object_id', 'column_name'], 'object_composite_key')
|
|
->addIndex(['integration', 'object_type', 'object_id', 'column_name'], 'integration_object_composite_key')
|
|
->addIndex(['integration', 'object_type', 'modified_at'], 'integration_object_type_modification_composite_key');
|
|
|
|
$builder->addId();
|
|
|
|
$builder
|
|
->createField('integration', Types::STRING)
|
|
->build();
|
|
|
|
$builder->addBigIntIdField('objectId', 'object_id', false);
|
|
|
|
$builder
|
|
->createField('objectType', Types::STRING)
|
|
->columnName('object_type')
|
|
->build();
|
|
|
|
$builder
|
|
->createField('modifiedAt', Types::DATETIME_MUTABLE)
|
|
->columnName('modified_at')
|
|
->build();
|
|
|
|
$builder
|
|
->createField('columnName', Types::STRING)
|
|
->columnName('column_name')
|
|
->build();
|
|
|
|
$builder
|
|
->createField('columnType', Types::STRING)
|
|
->columnName('column_type')
|
|
->build();
|
|
|
|
$builder
|
|
->createField('columnValue', Types::TEXT)
|
|
->columnName('column_value')
|
|
->build();
|
|
}
|
|
|
|
/**
|
|
* @return int
|
|
*/
|
|
public function getId()
|
|
{
|
|
return $this->id;
|
|
}
|
|
|
|
public function getIntegration(): string
|
|
{
|
|
return $this->integration;
|
|
}
|
|
|
|
/**
|
|
* @param string $integration
|
|
*
|
|
* @return FieldChange
|
|
*/
|
|
public function setIntegration($integration)
|
|
{
|
|
$this->integration = $integration;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function setObjectId(int $id): self
|
|
{
|
|
$this->objectId = (string) $id;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getObjectId(): int
|
|
{
|
|
return (int) $this->objectId;
|
|
}
|
|
|
|
public function setObjectType(string $type): self
|
|
{
|
|
$this->objectType = $type;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getObjectType(): string
|
|
{
|
|
return $this->objectType;
|
|
}
|
|
|
|
public function setModifiedAt(\DateTime $time): self
|
|
{
|
|
$this->modifiedAt = $time;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getModifiedAt(): \DateTimeInterface
|
|
{
|
|
return $this->modifiedAt;
|
|
}
|
|
|
|
public function setColumnName(string $name): self
|
|
{
|
|
$this->columnName = $name;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getColumnName(): string
|
|
{
|
|
return $this->columnName;
|
|
}
|
|
|
|
public function setColumnType(string $type): self
|
|
{
|
|
$this->columnType = $type;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getColumnType(): string
|
|
{
|
|
return $this->columnType;
|
|
}
|
|
|
|
public function setColumnValue(string $value): self
|
|
{
|
|
$this->columnValue = $value;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getColumnValue(): string
|
|
{
|
|
return $this->columnValue;
|
|
}
|
|
}
|