<?php
namespace App\Entity\Sync;
use App\Repository\Sync\SyncableResourceRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use DrosalysWeb\ObjectExtensions\Timestamp\Model\TimestampInterface;
use DrosalysWeb\ObjectExtensions\Timestamp\Model\TimestampTrait;
#[
ORM\Entity(repositoryClass: SyncableResourceRepository::class),
ORM\UniqueConstraint(fields: ['resourceType', 'resourceId']),
ORM\Index(fields: ['resourceType']),
ORM\Index(fields: ['resourceId']),
ORM\Index(fields: ['label']),
ORM\Table(name: 'syncable_resource')
]
class SyncableResource implements TimestampInterface
{
use TimestampTrait;
#[ORM\Id, ORM\GeneratedValue, ORM\Column(type: 'integer')]
private ?int $id = null;
#[ORM\Column(type: 'string', length: 255, nullable: false)]
private ?string $resourceType = null;
#[ORM\Column(type: 'string', length: 255, nullable: false)]
private ?string $resourceId = null;
#[ORM\Column(type: 'string', length: 255, nullable: false)]
private ?string $label = null;
#[ORM\Column(type: 'datetime', nullable: true)]
private ?\DateTime $deletedAt = null;
#[ORM\Column(type: 'datetime', nullable: true)]
private ?\DateTime $lastSyncRequestedAt = null;
#[ORM\OneToMany(mappedBy: 'syncableResource', targetEntity: SyncableResourceAppState::class, cascade: ['persist', 'remove'], orphanRemoval: true)]
private Collection $syncableResourceAppStates;
public function __construct() {
$this->syncableResourceAppStates = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getResourceType(): ?string
{
return $this->resourceType;
}
public function setResourceType(?string $resourceType): SyncableResource
{
$this->resourceType = $resourceType;
return $this;
}
public function getResourceId(): ?string
{
return $this->resourceId;
}
public function setResourceId(string|int|null $resourceId): SyncableResource
{
$this->resourceId = (string) $resourceId;
return $this;
}
public function getLabel(): ?string
{
return $this->label;
}
public function setLabel(?string $label): SyncableResource
{
$this->label = substr($label, 0, 255);
return $this;
}
public function getDeletedAt(): ?\DateTime
{
return $this->deletedAt;
}
public function setDeletedAt(?\DateTime $deletedAt): SyncableResource
{
$this->deletedAt = $deletedAt;
return $this;
}
public function getLastSyncRequestedAt(): ?\DateTime
{
return $this->lastSyncRequestedAt;
}
public function setLastSyncRequestedAt(?\DateTime $lastSyncRequestedAt): SyncableResource
{
$this->lastSyncRequestedAt = $lastSyncRequestedAt;
return $this;
}
public function getSyncableResourceAppStates(): Collection
{
return $this->syncableResourceAppStates;
}
public function setSyncableResourceAppStates(Collection $syncableResourceAppStates): SyncableResource
{
$this->syncableResourceAppStates = $syncableResourceAppStates;
return $this;
}
}