<?php
namespace App\Database\Domain\Entity\Sessions\ActiveSessions;
use App\Database\Domain\Entity\AbstractEntity;
use App\Database\Domain\Entity\User\User;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity()
*/
class ActiveSession extends AbstractEntity
{
/**
* @ORM\OneToOne(targetEntity="App\Database\Domain\Entity\User\User")
*
* @ORM\Cache(usage="NONSTRICT_READ_WRITE", region="write_rare")
*
* @ORM\JoinColumn(nullable=false, onDelete="CASCADE")
*/
private User $user;
/**
* @ORM\OneToMany(targetEntity="App\Database\Domain\Entity\Sessions\ActiveSessions\ActiveDevice", mappedBy="session", fetch="EXTRA_LAZY", cascade={"all"})
*
* @ORM\Cache(usage="NONSTRICT_READ_WRITE", region="write_rare")
*
* @var Collection<int, ActiveDevice>
*/
private Collection $devices;
public function __construct($id, User $user)
{
$this->id = $id;
$this->user = $user;
$this->devices = new ArrayCollection();
}
public function getUser(): User
{
return $this->user;
}
/**
* @return ActiveDevice[]
*/
public function getDevices(): Collection
{
return $this->devices;
}
public function addDevice(ActiveDevice $device): void
{
if (!$this->devices->contains($device)) {
$this->devices->add($device);
}
}
}