'connector:list'], name: 'get_all_mine', ), new Get( normalizationContext: ['groups' => 'connector:list'], security: 'object.user == user' ), new Post( routeName: 'connector_create', normalizationContext: ['groups' => ['connector:create', 'connector:list']], denormalizationContext: ['groups' => 'connector:create'], name: 'create' ), new Delete( security: 'object.user == user' ), ] )] #[ORM\Entity(repositoryClass: ConnectorRepository::class)] class Connector { #[ORM\Id] #[ORM\Column(type: 'uuid')] #[Groups(['connector:list', 'watchlist:list'])] private ?string $id; #[ORM\ManyToOne(inversedBy: 'connectors')] #[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')] public ?User $user = null; #[Groups(['connector:list', 'connector:create', 'watchlist:list'])] #[ORM\Column(enumType: ConnectorProvider::class)] private ?ConnectorProvider $provider = null; #[Groups(['connector:create'])] #[ORM\Column] private array $authData = []; /** * @var Collection */ #[ORM\OneToMany(targetEntity: WatchList::class, mappedBy: 'connector')] private Collection $watchLists; #[Groups(['connector:list', 'watchlist:list'])] #[ORM\Column] private ?\DateTimeImmutable $createdAt = null; #[Groups(['connector:list'])] protected int $watchlistCount; public function __construct() { $this->id = Uuid::v4(); $this->watchLists = new ArrayCollection(); } public function getId(): ?string { return $this->id; } public function getUser(): ?User { return $this->user; } public function setUser(?User $user): static { $this->user = $user; return $this; } public function getAuthData(): array { return $this->authData; } public function setAuthData(array $authData): static { $this->authData = $authData; return $this; } public function getProvider(): ?ConnectorProvider { return $this->provider; } public function setProvider(ConnectorProvider $provider): static { $this->provider = $provider; return $this; } /** * @return Collection */ public function getWatchLists(): Collection { return $this->watchLists; } public function addWatchList(WatchList $watchList): static { if (!$this->watchLists->contains($watchList)) { $this->watchLists->add($watchList); $watchList->setConnector($this); } return $this; } public function removeWatchList(WatchList $watchList): static { if ($this->watchLists->removeElement($watchList)) { // set the owning side to null (unless already changed) if ($watchList->getConnector() === $this) { $watchList->setConnector(null); } } return $this; } public function getCreatedAt(): ?\DateTimeImmutable { return $this->createdAt; } public function setCreatedAt(\DateTimeImmutable $createdAt): static { $this->createdAt = $createdAt; return $this; } public function getWatchlistCount(): ?int { return $this->watchLists->count(); } }