<?php
namespace Sq\Entity\Schema\ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Sq\Entity\Enum;
use Sq\Entity\Schema\Column\ImportSourceContext;
use Sq\Entity\Schema\DocumentObject;
/**
* ImportSource.
*/
#[ORM\Entity]
#[ORM\Table(name: 'import_source')]
#[ORM\Index(name: 'is_folder_order', columns: ['is_if_id', 'is_order'])]
class ImportSource implements BelongsToWorkspaceInterface
{
/**
* @var int
*/
#[ORM\Column(name: 'is_id', type: 'integer', nullable: false, options: ['unsigned' => true])]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'IDENTITY')]
private $id;
/**
* @var Member|null
*/
#[ORM\ManyToOne(targetEntity: Member::class)]
#[ORM\JoinColumn(name: 'is_m_id', referencedColumnName: 'm_id', nullable: true)]
private $member;
/**
* @var Workspace|null
*/
#[ORM\ManyToOne(targetEntity: Workspace::class, inversedBy: 'importSources')]
#[ORM\JoinColumn(name: 'is_ws_id', referencedColumnName: 'ws_id', nullable: true)]
private $workspace;
/**
* @var string
*/
#[ORM\Column(name: 'is_context', type: 'string', length: 0, nullable: false, options: ['default' => 'import'])]
private $context = ImportSourceContext::IMPORT;
/**
* @deprecated
*
* @var string|null
*/
#[ORM\Column(name: 'is_type', type: 'string', length: 0, nullable: true)]
private $typeLegacy;
/**
* @var string|null
*/
#[ORM\Column(name: 'is_type_gql', type: 'string', length: 0, nullable: true)]
private $type;
/**
* @var ImportFolder|null
*/
#[ORM\ManyToOne(targetEntity: ImportFolder::class, inversedBy: 'importSources')]
#[ORM\JoinColumn(name: 'is_if_id', referencedColumnName: 'if_id', nullable: true)]
private $importFolder;
/**
* @var int
*/
#[ORM\Column(name: 'is_order', type: 'smallint', nullable: false, options: ['unsigned' => true])]
private $order;
/**
* @var string|null
*/
#[ORM\Column(name: 'is_name', type: 'string', length: 191, nullable: true)]
private $name;
/**
* @var string
*/
#[ORM\Column(name: 'is_args', type: 'text', length: 0, nullable: false)]
private $args;
/**
* @var AutoImport|null
*/
#[ORM\OneToOne(targetEntity: AutoImport::class, mappedBy: 'importSource', cascade: ['persist', 'remove'])]
private $autoImport;
/**
* @var Collection
*/
#[ORM\OneToMany(targetEntity: AutoImportPinterestBoard::class, mappedBy: 'importSource', fetch: 'EAGER')]
private $pinterestBoards;
public function __construct(string $name, Enum\Import\ImportSourceType $type, int $order, DocumentObject\Import\ImportSourceArgs $args)
{
$this->name = $name;
$this->type = $type->getValue();
$this->typeLegacy = null;
$this->context = ImportSourceContext::IMPORT;
$this->order = $order;
$this->pinterestBoards = new ArrayCollection();
$this->setArgs($args);
}
public function getId(): ?int
{
return $this->id;
}
public function getMember(): ?Member
{
return $this->member;
}
public function setMember(?Member $member): self
{
$this->member = $member;
return $this;
}
public function getWorkspace(): Workspace
{
return $this->workspace;
}
public function setWorkspace(Workspace $workspace): self
{
$this->workspace = $workspace;
return $this;
}
public function isLegacyWithoutWorkspace(): bool
{
return $this->workspace === null;
}
public function getContext(): string
{
return $this->context;
}
public function setContext(string $context): self
{
$this->context = $context;
return $this;
}
public function getType(): Enum\Import\ImportSourceType
{
return new Enum\Import\ImportSourceType($this->type);
}
public function getImportFolder(): ?ImportFolder
{
return $this->importFolder;
}
public function setImportFolder(?ImportFolder $importFolder): self
{
$this->importFolder = $importFolder;
return $this;
}
public function getOrder(): int
{
return $this->order;
}
public function setOrder(int $order): self
{
$this->order = $order;
return $this;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(?string $name): self
{
$this->name = $name;
return $this;
}
public function getArgs(): DocumentObject\Import\ImportSourceArgs
{
return DocumentObject\Import\ImportSourceArgs::createFromTypeAndArgsArray(
new Enum\Import\ImportSourceType($this->type),
json_decode($this->args, true)
);
}
protected function setArgs(DocumentObject\Import\ImportSourceArgs $args): self
{
$this->args = json_encode($args->serialize());
return $this;
}
public function setArgsTerm(?string $term): self
{
$args = $this->getArgs();
$args->term = $term;
$this->setArgs($args);
return $this;
}
public function getAutoImport(): ?AutoImport
{
return $this->autoImport;
}
public function setAutoImport(AutoImport $autoImport): self
{
$this->autoImport = $autoImport;
return $this;
}
public function getPinterestBoards(): Collection
{
return $this->pinterestBoards;
}
public function addPinterestBoard(AutoImportPinterestBoard $board): self
{
if (!$this->pinterestBoards->contains($board))
{
$this->pinterestBoards->add($board);
}
return $this;
}
public function removePinterestBoard(AutoImportPinterestBoard $board): self
{
if ($this->pinterestBoards->contains($board))
{
$this->pinterestBoards->removeElement($board);
}
return $this;
}
}