lean-api/src/Entity/Error.php
2025-05-21 18:36:19 +00:00

79 lines
2.3 KiB
PHP

<?php
namespace Lean\Api\Entity;
use Lean\Api\Attribute\EntityField;
use Ulmus\EntityTrait,
Ulmus\SearchRequest\SearchableInterface,
Ulmus\SearchRequest\SearchRequestInterface,
Ulmus\Entity\Field\Datetime;
use Ulmus\{Attribute\Obj\Table,
Entity\EntityInterface};
use Ulmus\{Api\Common\MethodEnum,
SearchRequest,
SearchRequest\Attribute\PropertyValueModifier\Split,
SearchRequest\Attribute\PropertyValueSource,
SearchRequest\Attribute\SearchOrderBy,
SearchRequest\Attribute\SearchWhere,
SearchRequest\SearchMethodEnum};
use Ulmus\Attribute\Property\{Field, Filter, FilterJoin, Relation, Join, Virtual, Where};
#[Table(name: "debug_errors", adapter: "lean.api")]
class Error implements EntityInterface, \JsonSerializable {
use EntityTrait;
#[Field\Id]
public int $id;
#[Field]
#[EntityField(description: "URL from which the error occurred")]
public string $url;
#[Field]
#[EntityField(description: "HTTP method", field: "httpMethod")]
public MethodEnum $method;
#[Field]
#[EntityField(description: "Error message")]
public string $message;
#[Field]
#[EntityField(description: "Error code")]
public int $code;
#[Field]
#[EntityField(description: "File from which the error occurred")]
public string $file;
#[Field]
#[EntityField(description: "Line in the file from which the error occurred")]
public int $line;
#[Field]
#[EntityField(description: "Stack trace of the exception")]
public array $trace;
#[Field\CreatedAt(name: "created_at")]
public Datetime $createdAt;
public function __toString() {
return mb_strlen($this->message) > 255 ? mb_substr($this->message, 0, 255) . "[...]" : $this->message;
}
public static function searchRequest(...$arguments) : SearchRequestInterface
{
return new #[SearchRequest\Attribute\SearchRequestParameter(Error::class)] class(...$arguments) extends SearchRequest\SearchRequest {
#[SearchRequest\Attribute\SearchWhere(source: SearchRequest\Attribute\PropertyValueSource::RequestAttribute)]
public int $id;
#[SearchWhere(method: SearchMethodEnum::Like)]
public string $message;
#[SearchOrderBy(parameter: "created_at",)]
public string $createdAt = SearchOrderBy::DESCENDING;
};
}
}