<?php
namespace App\Entity;
use ApiPlatform\Core\Annotation\ApiFilter;
use ApiPlatform\Core\Annotation\ApiResource;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\DateFilter;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\OrderFilter;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\SearchFilter;
use App\Traits\UuidEntityTrait;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="log", indexes={
* @ORM\Index(name="idx_log_created_at", columns={"created_at"}),
* @ORM\Index(name="idx_log_level", columns={"level"})
* })
* @ORM\HasLifecycleCallbacks
*/
#[ApiResource(
collectionOperations: ['get'],
itemOperations: ['get']
)]
#[ApiFilter(SearchFilter::class, properties: [
'context' => SearchFilter::STRATEGY_PARTIAL,
'message' => SearchFilter::STRATEGY_PARTIAL,
])]
#[ApiFilter(DateFilter::class, properties: ['createdAt'])]
#[ApiFilter(OrderFilter::class, properties: ['createdAt' => 'DESC'])]
class Log
{
use UuidEntityTrait;
/**
* @ORM\Column(name="message", type="text")
*/
private ?string $message = null;
/**
* @ORM\Column(name="context", type="array")
*/
private ?array $context = null;
/**
* @ORM\Column(name="level", type="smallint")
*/
private ?int $level = null;
/**
* @ORM\Column(name="level_name", type="string", length=50)
*/
private ?string $levelName = null;
/**
* @ORM\Column(name="extra", type="array")
*/
private ?array $extra = null;
/**
* @ORM\Column(name="created_at", type="datetime", options={"default": "CURRENT_TIMESTAMP"})
*/
private ?\DateTimeInterface $createdAt = null;
/**
* @ORM\PrePersist
*/
public function onPrePersist()
{
$this->createdAt = new \DateTime();
}
public function getMessage(): ?string
{
return $this->message;
}
public function setMessage(string $message): Log
{
$this->message = $message;
return $this;
}
public function getContext(): ?array
{
return $this->context;
}
public function setContext(array $context): Log
{
$this->context = $context;
return $this;
}
public function getLevel(): ?int
{
return $this->level;
}
public function setLevel(int $level): Log
{
$this->level = $level;
return $this;
}
public function getLevelName(): ?string
{
return $this->levelName;
}
public function setLevelName(string $levelName): Log
{
$this->levelName = $levelName;
return $this;
}
public function getExtra(): ?array
{
return $this->extra;
}
public function setExtra(array $extra): Log
{
$this->extra = $extra;
return $this;
}
public function getCreatedAt(): ?\DateTimeInterface
{
return $this->createdAt;
}
public function setCreatedAt(\DateTimeInterface $createdAt): Log
{
$this->createdAt = $createdAt;
return $this;
}
}