<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\Mapping\JoinColumn;
use Doctrine\ORM\Mapping\OneToOne;
use JMS\Serializer\Annotation\Groups;
/**
* @ORM\Table(name="ContentRanking", indexes={
*
* @ORM\Index(name="created_at_idx", columns={"created_at"}),
* @ORM\Index(name="updated_at_idx", columns={"updated_at"}),
* @ORM\Index(name="rank_idx", columns={"rank"}),
* @ORM\Index(name="rank_updated_at_idx", columns={"rank", "updated_at"}),
* @ORM\Index(name="rank_created_at_idx", columns={"rank", "created_at"})
* })
*
* @ORM\Entity(repositoryClass="App\Repository\ContentRankingRepository")
*
* @ORM\HasLifecycleCallbacks()
*/
class ContentRanking
{
/**
* @Groups({"contentlist"})
*
* @ORM\Id()
*
* @ORM\GeneratedValue()
*
* @ORM\Column(type="integer")
*/
private $id;
/**
* @var int
*
* @ORM\Column(type="integer", nullable=true)
*/
private $votes = 0;
/**
* @Groups({"contentlist", "video_search", "imageset_search"})
*
* @var int
*
* @ORM\Column(type="integer", nullable=true)
*/
private $vote_average;
/**
* @var int
*
* @ORM\Column(type="integer", nullable=true)
*/
private $comment_count = 0;
/**
* @var int
*
* @ORM\Column(type="integer", nullable=true)
*/
private $like_count;
/**
* @var int
*
* @ORM\Column(type="integer", nullable=true)
*/
private $sell_count = 0;
/**
* @var int
*
* @Groups({"video_search", "imageset_search"})
*
* @ORM\Column(type="integer", nullable=false)
*/
private $rank = 0;
/**
* @var float
*
* @ORM\Column(type="float", nullable=true)
*/
private $rank_modifier;
/**
* @OneToOne(targetEntity="Content", inversedBy="ranking")
*
* @JoinColumn(name="content_id", referencedColumnName="id", onDelete="CASCADE")
*/
protected $content;
/**
* @var \DateTime
*
* @ORM\Column(type="datetime")
*/
private $created_at;
/**
* @var \DateTime
*
* @ORM\Column(type="datetime")
*/
private $updated_at;
/**
* @ORM\PrePersist()
*/
public function prePersist()
{
if (!$this->getCreatedAt()) {
$this->created_at = new \DateTime();
}
if (!$this->getUpdatedAt()) {
$this->setUpdatedAt(new \DateTime());
}
}
public function getId()
{
return $this->id;
}
public function setCommentCount(int $comment_count): self
{
$this->comment_count = $comment_count;
return $this;
}
public function getCommentCount(): int
{
return $this->comment_count ?? 0;
}
public function setContent(Content $content): self
{
$this->content = $content;
return $this;
}
public function getContent(): ?Content
{
return $this->content;
}
public function getCreatedAt(): ?\DateTime
{
return $this->created_at;
}
public function setId(int $id): self
{
$this->id = $id;
return $this;
}
public function setLikeCount(int $like_count): self
{
$this->like_count = $like_count;
return $this;
}
public function getLikeCount(): ?int
{
return $this->like_count;
}
public function setRank(int $rank): self
{
$this->rank = $rank;
return $this;
}
public function getRank(): ?int
{
return $this->rank;
}
public function setSellCount(int $sell_count): self
{
$this->sell_count = $sell_count;
return $this;
}
public function getSellCount(): int
{
return $this->sell_count ?? 0;
}
public function setUpdatedAt(?\DateTime $updated_at): self
{
$this->updated_at = $updated_at;
return $this;
}
public function getUpdatedAt(): ?\DateTime
{
return $this->updated_at;
}
public function setVoteAverage(int $vote_average): self
{
$this->vote_average = $vote_average;
return $this;
}
public function getVoteAverage(): ?int
{
return $this->vote_average;
}
public function setVotes(int $votes): self
{
$this->votes = $votes;
return $this;
}
public function getVotes(): int
{
return $this->votes ?? 0;
}
public function setRankModifier(int $rank_modifier): self
{
$this->rank_modifier = $rank_modifier;
return $this;
}
public function getRankModifier(): ?int
{
return $this->rank_modifier;
}
}