- Add Assert\Choice on ClientTicket type and status with typed constants - Add Assert\Url on GiteaConfiguration, BookStackConfiguration, TaskBookStackLink, ClientTicket - Fix concurrent task/ticket numbering: use pg_advisory_xact_lock instead of FOR UPDATE with MAX() - Wrap CreateTaskTool numbering in transaction - Harmonize repository contracts: both return max number, caller adds +1 Tickets: T-004, T-008, T-011, T-012 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
75 lines
1.6 KiB
PHP
75 lines
1.6 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Entity;
|
|
|
|
use App\Repository\BookStackConfigurationRepository;
|
|
use Doctrine\ORM\Mapping as ORM;
|
|
use Symfony\Component\Validator\Constraints as Assert;
|
|
|
|
#[ORM\Entity(repositoryClass: BookStackConfigurationRepository::class)]
|
|
class BookStackConfiguration
|
|
{
|
|
#[ORM\Id]
|
|
#[ORM\GeneratedValue]
|
|
#[ORM\Column]
|
|
private ?int $id = null;
|
|
|
|
#[ORM\Column(length: 255, nullable: true)]
|
|
#[Assert\Url]
|
|
private ?string $url = null;
|
|
|
|
#[ORM\Column(type: 'text', nullable: true)]
|
|
private ?string $encryptedTokenId = null;
|
|
|
|
#[ORM\Column(type: 'text', nullable: true)]
|
|
private ?string $encryptedTokenSecret = null;
|
|
|
|
public function getId(): ?int
|
|
{
|
|
return $this->id;
|
|
}
|
|
|
|
public function getUrl(): ?string
|
|
{
|
|
return $this->url;
|
|
}
|
|
|
|
public function setUrl(?string $url): static
|
|
{
|
|
$this->url = $url;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getEncryptedTokenId(): ?string
|
|
{
|
|
return $this->encryptedTokenId;
|
|
}
|
|
|
|
public function setEncryptedTokenId(?string $encryptedTokenId): static
|
|
{
|
|
$this->encryptedTokenId = $encryptedTokenId;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getEncryptedTokenSecret(): ?string
|
|
{
|
|
return $this->encryptedTokenSecret;
|
|
}
|
|
|
|
public function setEncryptedTokenSecret(?string $encryptedTokenSecret): static
|
|
{
|
|
$this->encryptedTokenSecret = $encryptedTokenSecret;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function hasToken(): bool
|
|
{
|
|
return null !== $this->encryptedTokenId && null !== $this->encryptedTokenSecret;
|
|
}
|
|
}
|