mirror of
https://github.com/wallabag/wallabag.git
synced 2025-06-27 16:36:00 +00:00
Merge pull request #8120 from wallabag/migrate-to-doctrine-attributes
Migrate to Doctrine attributes
This commit is contained in:
commit
27a93cc281
16 changed files with 201 additions and 334 deletions
|
@ -78,7 +78,7 @@ doctrine:
|
|||
auto_mapping: true
|
||||
mappings:
|
||||
Wallabag:
|
||||
type: annotation
|
||||
type: attribute
|
||||
is_bundle: false
|
||||
dir: '%kernel.project_dir%/src/Entity'
|
||||
prefix: 'Wallabag\Entity'
|
||||
|
|
|
@ -10,49 +10,46 @@ use JMS\Serializer\Annotation\SerializedName;
|
|||
use JMS\Serializer\Annotation\VirtualProperty;
|
||||
use Symfony\Component\Validator\Constraints as Assert;
|
||||
use Wallabag\Helper\EntityTimestampsTrait;
|
||||
use Wallabag\Repository\AnnotationRepository;
|
||||
|
||||
/**
|
||||
* Annotation.
|
||||
*
|
||||
* @ORM\Table(name="annotation")
|
||||
* @ORM\Entity(repositoryClass="Wallabag\Repository\AnnotationRepository")
|
||||
* @ORM\HasLifecycleCallbacks()
|
||||
* @ExclusionPolicy("none")
|
||||
*/
|
||||
#[ORM\Table(name: 'annotation')]
|
||||
#[ORM\Entity(repositoryClass: AnnotationRepository::class)]
|
||||
#[ORM\HasLifecycleCallbacks]
|
||||
class Annotation
|
||||
{
|
||||
use EntityTimestampsTrait;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*
|
||||
* @ORM\Column(name="id", type="integer")
|
||||
* @ORM\Id
|
||||
* @ORM\GeneratedValue(strategy="AUTO")
|
||||
*/
|
||||
#[ORM\Column(name: 'id', type: 'integer')]
|
||||
#[ORM\Id]
|
||||
#[ORM\GeneratedValue(strategy: 'AUTO')]
|
||||
private $id;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*
|
||||
* @ORM\Column(name="text", type="text")
|
||||
*
|
||||
* @Groups({"entries_for_user", "export_all"})
|
||||
*/
|
||||
#[ORM\Column(name: 'text', type: 'text')]
|
||||
private $text;
|
||||
|
||||
/**
|
||||
* @var \DateTime
|
||||
*
|
||||
* @ORM\Column(name="created_at", type="datetime")
|
||||
*/
|
||||
#[ORM\Column(name: 'created_at', type: 'datetime')]
|
||||
private $createdAt;
|
||||
|
||||
/**
|
||||
* @var \DateTime
|
||||
*
|
||||
* @ORM\Column(name="updated_at", type="datetime")
|
||||
*/
|
||||
#[ORM\Column(name: 'updated_at', type: 'datetime')]
|
||||
private $updatedAt;
|
||||
|
||||
/**
|
||||
|
@ -62,34 +59,31 @@ class Annotation
|
|||
* max = 10000,
|
||||
* maxMessage = "validator.quote_length_too_high"
|
||||
* )
|
||||
* @ORM\Column(name="quote", type="text")
|
||||
*
|
||||
* @Groups({"entries_for_user", "export_all"})
|
||||
*/
|
||||
#[ORM\Column(name: 'quote', type: 'text')]
|
||||
private $quote;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*
|
||||
* @ORM\Column(name="ranges", type="array")
|
||||
*
|
||||
* @Groups({"entries_for_user", "export_all"})
|
||||
*/
|
||||
#[ORM\Column(name: 'ranges', type: 'array')]
|
||||
private $ranges;
|
||||
|
||||
/**
|
||||
* @Exclude
|
||||
*
|
||||
* @ORM\ManyToOne(targetEntity="Wallabag\Entity\User")
|
||||
*/
|
||||
#[ORM\ManyToOne(targetEntity: User::class)]
|
||||
private $user;
|
||||
|
||||
/**
|
||||
* @Exclude
|
||||
*
|
||||
* @ORM\ManyToOne(targetEntity="Wallabag\Entity\Entry", inversedBy="annotations")
|
||||
* @ORM\JoinColumn(name="entry_id", referencedColumnName="id", onDelete="cascade")
|
||||
*/
|
||||
#[ORM\JoinColumn(name: 'entry_id', referencedColumnName: 'id', onDelete: 'cascade')]
|
||||
#[ORM\ManyToOne(targetEntity: Entry::class, inversedBy: 'annotations')]
|
||||
private $entry;
|
||||
|
||||
/*
|
||||
|
|
|
@ -4,29 +4,22 @@ namespace Wallabag\Entity\Api;
|
|||
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use FOS\OAuthServerBundle\Entity\AccessToken as BaseAccessToken;
|
||||
use Wallabag\Entity\User;
|
||||
|
||||
/**
|
||||
* @ORM\Table("oauth2_access_tokens")
|
||||
* @ORM\Entity
|
||||
*/
|
||||
#[ORM\Table('oauth2_access_tokens')]
|
||||
#[ORM\Entity]
|
||||
class AccessToken extends BaseAccessToken
|
||||
{
|
||||
/**
|
||||
* @ORM\Id
|
||||
* @ORM\Column(type="integer")
|
||||
* @ORM\GeneratedValue(strategy="AUTO")
|
||||
*/
|
||||
#[ORM\Id]
|
||||
#[ORM\Column(type: 'integer')]
|
||||
#[ORM\GeneratedValue(strategy: 'AUTO')]
|
||||
protected $id;
|
||||
|
||||
/**
|
||||
* @ORM\ManyToOne(targetEntity="Wallabag\Entity\Api\Client", inversedBy="accessTokens")
|
||||
* @ORM\JoinColumn(nullable=false)
|
||||
*/
|
||||
#[ORM\JoinColumn(nullable: false)]
|
||||
#[ORM\ManyToOne(targetEntity: Client::class, inversedBy: 'accessTokens')]
|
||||
protected $client;
|
||||
|
||||
/**
|
||||
* @ORM\ManyToOne(targetEntity="Wallabag\Entity\User")
|
||||
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE")
|
||||
*/
|
||||
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
|
||||
#[ORM\ManyToOne(targetEntity: User::class)]
|
||||
protected $user;
|
||||
}
|
||||
|
|
|
@ -4,29 +4,22 @@ namespace Wallabag\Entity\Api;
|
|||
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use FOS\OAuthServerBundle\Entity\AuthCode as BaseAuthCode;
|
||||
use Wallabag\Entity\User;
|
||||
|
||||
/**
|
||||
* @ORM\Table("oauth2_auth_codes")
|
||||
* @ORM\Entity
|
||||
*/
|
||||
#[ORM\Table('oauth2_auth_codes')]
|
||||
#[ORM\Entity]
|
||||
class AuthCode extends BaseAuthCode
|
||||
{
|
||||
/**
|
||||
* @ORM\Id
|
||||
* @ORM\Column(type="integer")
|
||||
* @ORM\GeneratedValue(strategy="AUTO")
|
||||
*/
|
||||
#[ORM\Id]
|
||||
#[ORM\Column(type: 'integer')]
|
||||
#[ORM\GeneratedValue(strategy: 'AUTO')]
|
||||
protected $id;
|
||||
|
||||
/**
|
||||
* @ORM\ManyToOne(targetEntity="Wallabag\Entity\Api\Client")
|
||||
* @ORM\JoinColumn(nullable=false)
|
||||
*/
|
||||
#[ORM\JoinColumn(nullable: false)]
|
||||
#[ORM\ManyToOne(targetEntity: Client::class)]
|
||||
protected $client;
|
||||
|
||||
/**
|
||||
* @ORM\ManyToOne(targetEntity="Wallabag\Entity\User")
|
||||
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE")
|
||||
*/
|
||||
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
|
||||
#[ORM\ManyToOne(targetEntity: User::class)]
|
||||
protected $user;
|
||||
}
|
||||
|
|
|
@ -9,43 +9,34 @@ use JMS\Serializer\Annotation\SerializedName;
|
|||
use JMS\Serializer\Annotation\VirtualProperty;
|
||||
use OpenApi\Annotations as OA;
|
||||
use Wallabag\Entity\User;
|
||||
use Wallabag\Repository\Api\ClientRepository;
|
||||
|
||||
/**
|
||||
* @ORM\Table("oauth2_clients")
|
||||
* @ORM\Entity(repositoryClass="Wallabag\Repository\Api\ClientRepository")
|
||||
*/
|
||||
#[ORM\Table('oauth2_clients')]
|
||||
#[ORM\Entity(repositoryClass: ClientRepository::class)]
|
||||
class Client extends BaseClient
|
||||
{
|
||||
/**
|
||||
* @ORM\Id
|
||||
* @ORM\Column(type="integer")
|
||||
* @ORM\GeneratedValue(strategy="AUTO")
|
||||
*/
|
||||
#[ORM\Id]
|
||||
#[ORM\Column(type: 'integer')]
|
||||
#[ORM\GeneratedValue(strategy: 'AUTO')]
|
||||
protected $id;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*
|
||||
* @ORM\Column(name="name", type="text", nullable=false)
|
||||
*
|
||||
* @OA\Property(
|
||||
* description="Name of the API client",
|
||||
* type="string",
|
||||
* example="Default Client",
|
||||
* )
|
||||
*
|
||||
* @Groups({"user_api_with_client"})
|
||||
*/
|
||||
#[ORM\Column(name: 'name', type: 'text', nullable: false)]
|
||||
protected $name;
|
||||
|
||||
/**
|
||||
* @ORM\OneToMany(targetEntity="Wallabag\Entity\Api\RefreshToken", mappedBy="client", cascade={"remove"})
|
||||
*/
|
||||
#[ORM\OneToMany(targetEntity: RefreshToken::class, mappedBy: 'client', cascade: ['remove'])]
|
||||
protected $refreshTokens;
|
||||
|
||||
/**
|
||||
* @ORM\OneToMany(targetEntity="Wallabag\Entity\Api\AccessToken", mappedBy="client", cascade={"remove"})
|
||||
*/
|
||||
#[ORM\OneToMany(targetEntity: AccessToken::class, mappedBy: 'client', cascade: ['remove'])]
|
||||
protected $accessTokens;
|
||||
|
||||
/**
|
||||
|
@ -62,9 +53,7 @@ class Client extends BaseClient
|
|||
*/
|
||||
protected $secret;
|
||||
|
||||
/**
|
||||
* @ORM\ManyToOne(targetEntity="Wallabag\Entity\User", inversedBy="clients")
|
||||
*/
|
||||
#[ORM\ManyToOne(targetEntity: User::class, inversedBy: 'clients')]
|
||||
private $user;
|
||||
|
||||
public function __construct(User $user)
|
||||
|
|
|
@ -4,29 +4,22 @@ namespace Wallabag\Entity\Api;
|
|||
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use FOS\OAuthServerBundle\Entity\RefreshToken as BaseRefreshToken;
|
||||
use Wallabag\Entity\User;
|
||||
|
||||
/**
|
||||
* @ORM\Table("oauth2_refresh_tokens")
|
||||
* @ORM\Entity
|
||||
*/
|
||||
#[ORM\Table('oauth2_refresh_tokens')]
|
||||
#[ORM\Entity]
|
||||
class RefreshToken extends BaseRefreshToken
|
||||
{
|
||||
/**
|
||||
* @ORM\Id
|
||||
* @ORM\Column(type="integer")
|
||||
* @ORM\GeneratedValue(strategy="AUTO")
|
||||
*/
|
||||
#[ORM\Id]
|
||||
#[ORM\Column(type: 'integer')]
|
||||
#[ORM\GeneratedValue(strategy: 'AUTO')]
|
||||
protected $id;
|
||||
|
||||
/**
|
||||
* @ORM\ManyToOne(targetEntity="Wallabag\Entity\Api\Client", inversedBy="refreshTokens")
|
||||
* @ORM\JoinColumn(nullable=false)
|
||||
*/
|
||||
#[ORM\JoinColumn(nullable: false)]
|
||||
#[ORM\ManyToOne(targetEntity: Client::class, inversedBy: 'refreshTokens')]
|
||||
protected $client;
|
||||
|
||||
/**
|
||||
* @ORM\ManyToOne(targetEntity="Wallabag\Entity\User")
|
||||
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE")
|
||||
*/
|
||||
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
|
||||
#[ORM\ManyToOne(targetEntity: User::class)]
|
||||
protected $user;
|
||||
}
|
||||
|
|
|
@ -6,18 +6,14 @@ use Doctrine\Common\Collections\ArrayCollection;
|
|||
use Doctrine\ORM\Mapping as ORM;
|
||||
use JMS\Serializer\Annotation\Groups;
|
||||
use Symfony\Component\Validator\Constraints as Assert;
|
||||
use Wallabag\Repository\ConfigRepository;
|
||||
|
||||
/**
|
||||
* Config.
|
||||
*
|
||||
* @ORM\Entity(repositoryClass="Wallabag\Repository\ConfigRepository")
|
||||
* @ORM\Table(
|
||||
* name="`config`",
|
||||
* indexes={
|
||||
* @ORM\Index(columns={"feed_token"}),
|
||||
* }
|
||||
* )
|
||||
*/
|
||||
#[ORM\Table(name: '`config`')]
|
||||
#[ORM\Index(columns: ['feed_token'])]
|
||||
#[ORM\Entity(repositoryClass: ConfigRepository::class)]
|
||||
class Config
|
||||
{
|
||||
public const REDIRECT_TO_HOMEPAGE = 0;
|
||||
|
@ -26,12 +22,11 @@ class Config
|
|||
/**
|
||||
* @var int
|
||||
*
|
||||
* @ORM\Column(name="id", type="integer")
|
||||
* @ORM\Id
|
||||
* @ORM\GeneratedValue(strategy="AUTO")
|
||||
*
|
||||
* @Groups({"config_api"})
|
||||
*/
|
||||
#[ORM\Column(name: 'id', type: 'integer')]
|
||||
#[ORM\Id]
|
||||
#[ORM\GeneratedValue(strategy: 'AUTO')]
|
||||
private $id;
|
||||
|
||||
/**
|
||||
|
@ -43,150 +38,134 @@ class Config
|
|||
* max = 100000,
|
||||
* maxMessage = "validator.item_per_page_too_high"
|
||||
* )
|
||||
* @ORM\Column(name="items_per_page", type="integer", nullable=false)
|
||||
*
|
||||
* @Groups({"config_api"})
|
||||
*/
|
||||
#[ORM\Column(name: 'items_per_page', type: 'integer', nullable: false)]
|
||||
private $itemsPerPage;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*
|
||||
* @Assert\NotBlank()
|
||||
* @ORM\Column(name="language", type="string", nullable=false)
|
||||
*
|
||||
* @Groups({"config_api"})
|
||||
*/
|
||||
#[ORM\Column(name: 'language', type: 'string', nullable: false)]
|
||||
private $language;
|
||||
|
||||
/**
|
||||
* @var string|null
|
||||
*
|
||||
* @ORM\Column(name="feed_token", type="string", nullable=true)
|
||||
*
|
||||
* @Groups({"config_api"})
|
||||
*/
|
||||
#[ORM\Column(name: 'feed_token', type: 'string', nullable: true)]
|
||||
private $feedToken;
|
||||
|
||||
/**
|
||||
* @var int|null
|
||||
*
|
||||
* @ORM\Column(name="feed_limit", type="integer", nullable=true)
|
||||
* @Assert\Range(
|
||||
* min = 1,
|
||||
* max = 100000,
|
||||
* maxMessage = "validator.feed_limit_too_high"
|
||||
* )
|
||||
*
|
||||
* @Groups({"config_api"})
|
||||
*/
|
||||
#[ORM\Column(name: 'feed_limit', type: 'integer', nullable: true)]
|
||||
private $feedLimit;
|
||||
|
||||
/**
|
||||
* @var float|null
|
||||
*
|
||||
* @ORM\Column(name="reading_speed", type="float", nullable=true)
|
||||
*
|
||||
* @Groups({"config_api"})
|
||||
*/
|
||||
#[ORM\Column(name: 'reading_speed', type: 'float', nullable: true)]
|
||||
private $readingSpeed;
|
||||
|
||||
/**
|
||||
* @var string|null
|
||||
*
|
||||
* @ORM\Column(name="pocket_consumer_key", type="string", nullable=true)
|
||||
*/
|
||||
#[ORM\Column(name: 'pocket_consumer_key', type: 'string', nullable: true)]
|
||||
private $pocketConsumerKey;
|
||||
|
||||
/**
|
||||
* @var int|null
|
||||
*
|
||||
* @ORM\Column(name="action_mark_as_read", type="integer", nullable=true, options={"default" = 0})
|
||||
*
|
||||
* @Groups({"config_api"})
|
||||
*/
|
||||
#[ORM\Column(name: 'action_mark_as_read', type: 'integer', nullable: true, options: ['default' => 0])]
|
||||
private $actionMarkAsRead;
|
||||
|
||||
/**
|
||||
* @var int|null
|
||||
*
|
||||
* @ORM\Column(name="list_mode", type="integer", nullable=true)
|
||||
*
|
||||
* @Groups({"config_api"})
|
||||
*/
|
||||
#[ORM\Column(name: 'list_mode', type: 'integer', nullable: true)]
|
||||
private $listMode;
|
||||
|
||||
/**
|
||||
* @var int|null
|
||||
*
|
||||
* @ORM\Column(name="display_thumbnails", type="integer", nullable=true, options={"default" = 1})
|
||||
*
|
||||
* @Groups({"config_api"})
|
||||
*/
|
||||
#[ORM\Column(name: 'display_thumbnails', type: 'integer', nullable: true, options: ['default' => 1])]
|
||||
private $displayThumbnails;
|
||||
|
||||
/**
|
||||
* @var string|null
|
||||
*
|
||||
* @ORM\Column(name="font", type="text", nullable=true)
|
||||
*
|
||||
* @Groups({"config_api"})
|
||||
*/
|
||||
#[ORM\Column(name: 'font', type: 'text', nullable: true)]
|
||||
private $font;
|
||||
|
||||
/**
|
||||
* @var float|null
|
||||
*
|
||||
* @ORM\Column(name="fontsize", type="float", nullable=true)
|
||||
*
|
||||
* @Groups({"config_api"})
|
||||
*/
|
||||
#[ORM\Column(name: 'fontsize', type: 'float', nullable: true)]
|
||||
private $fontsize;
|
||||
|
||||
/**
|
||||
* @var float|null
|
||||
*
|
||||
* @ORM\Column(name="line_height", type="float", nullable=true)
|
||||
*
|
||||
* @Groups({"config_api"})
|
||||
*/
|
||||
#[ORM\Column(name: 'line_height', type: 'float', nullable: true)]
|
||||
private $lineHeight;
|
||||
|
||||
/**
|
||||
* @var float|null
|
||||
*
|
||||
* @ORM\Column(name="max_width", type="float", nullable=true)
|
||||
*
|
||||
* @Groups({"config_api"})
|
||||
*/
|
||||
#[ORM\Column(name: 'max_width', type: 'float', nullable: true)]
|
||||
private $maxWidth;
|
||||
|
||||
/**
|
||||
* @var string|null
|
||||
*
|
||||
* @ORM\Column(name="custom_css", type="text", nullable=true)
|
||||
*/
|
||||
#[ORM\Column(name: 'custom_css', type: 'text', nullable: true)]
|
||||
private $customCSS;
|
||||
|
||||
/**
|
||||
* @ORM\OneToOne(targetEntity="Wallabag\Entity\User", inversedBy="config")
|
||||
*/
|
||||
#[ORM\OneToOne(targetEntity: User::class, inversedBy: 'config')]
|
||||
private $user;
|
||||
|
||||
/**
|
||||
* @var ArrayCollection<TaggingRule>
|
||||
*
|
||||
* @ORM\OneToMany(targetEntity="Wallabag\Entity\TaggingRule", mappedBy="config", cascade={"remove"})
|
||||
* @ORM\OrderBy({"id" = "ASC"})
|
||||
*/
|
||||
#[ORM\OneToMany(targetEntity: TaggingRule::class, mappedBy: 'config', cascade: ['remove'])]
|
||||
#[ORM\OrderBy(['id' => 'ASC'])]
|
||||
private $taggingRules;
|
||||
|
||||
/**
|
||||
* @var ArrayCollection<IgnoreOriginUserRule>
|
||||
*
|
||||
* @ORM\OneToMany(targetEntity="Wallabag\Entity\IgnoreOriginUserRule", mappedBy="config", cascade={"remove"})
|
||||
* @ORM\OrderBy({"id" = "ASC"})
|
||||
*/
|
||||
#[ORM\OneToMany(targetEntity: IgnoreOriginUserRule::class, mappedBy: 'config', cascade: ['remove'])]
|
||||
#[ORM\OrderBy(['id' => 'ASC'])]
|
||||
private $ignoreOriginRules;
|
||||
|
||||
/*
|
||||
|
|
|
@ -13,28 +13,25 @@ use JMS\Serializer\Annotation\XmlRoot;
|
|||
use Symfony\Component\Validator\Constraints as Assert;
|
||||
use Wallabag\Helper\EntityTimestampsTrait;
|
||||
use Wallabag\Helper\UrlHasher;
|
||||
use Wallabag\Repository\EntryRepository;
|
||||
|
||||
/**
|
||||
* Entry.
|
||||
*
|
||||
* @XmlRoot("entry")
|
||||
* @ORM\Entity(repositoryClass="Wallabag\Repository\EntryRepository")
|
||||
* @ORM\Table(
|
||||
* name="`entry`",
|
||||
* indexes={
|
||||
* @ORM\Index(columns={"created_at"}),
|
||||
* @ORM\Index(columns={"uid"}),
|
||||
* @ORM\Index(columns={"user_id", "hashed_url"}),
|
||||
* @ORM\Index(columns={"user_id", "hashed_given_url"}),
|
||||
* @ORM\Index(columns={"language", "user_id"}),
|
||||
* @ORM\Index(columns={"user_id", "is_archived", "archived_at"}),
|
||||
* @ORM\Index(columns={"user_id", "created_at"}),
|
||||
* @ORM\Index(columns={"user_id", "is_starred", "starred_at"})
|
||||
* }
|
||||
* )
|
||||
* @ORM\HasLifecycleCallbacks()
|
||||
* @Hateoas\Relation("self", href = "expr('/api/entries/' ~ object.getId())")
|
||||
*/
|
||||
#[ORM\Table(name: '`entry`')]
|
||||
#[ORM\Index(columns: ['created_at'])]
|
||||
#[ORM\Index(columns: ['uid'])]
|
||||
#[ORM\Index(columns: ['user_id', 'hashed_url'])]
|
||||
#[ORM\Index(columns: ['user_id', 'hashed_given_url'])]
|
||||
#[ORM\Index(columns: ['language', 'user_id'])]
|
||||
#[ORM\Index(columns: ['user_id', 'is_archived', 'archived_at'])]
|
||||
#[ORM\Index(columns: ['user_id', 'created_at'])]
|
||||
#[ORM\Index(columns: ['user_id', 'is_starred', 'starred_at'])]
|
||||
#[ORM\Entity(repositoryClass: EntryRepository::class)]
|
||||
#[ORM\HasLifecycleCallbacks]
|
||||
class Entry
|
||||
{
|
||||
use EntityTimestampsTrait;
|
||||
|
@ -43,30 +40,27 @@ class Entry
|
|||
/**
|
||||
* @var int
|
||||
*
|
||||
* @ORM\Column(name="id", type="integer")
|
||||
* @ORM\Id
|
||||
* @ORM\GeneratedValue(strategy="AUTO")
|
||||
*
|
||||
* @Groups({"entries_for_user", "export_all"})
|
||||
*/
|
||||
#[ORM\Column(name: 'id', type: 'integer')]
|
||||
#[ORM\Id]
|
||||
#[ORM\GeneratedValue(strategy: 'AUTO')]
|
||||
private $id;
|
||||
|
||||
/**
|
||||
* @var string|null
|
||||
*
|
||||
* @ORM\Column(name="uid", type="string", length=23, nullable=true)
|
||||
*
|
||||
* @Groups({"entries_for_user", "export_all"})
|
||||
*/
|
||||
#[ORM\Column(name: 'uid', type: 'string', length: 23, nullable: true)]
|
||||
private $uid;
|
||||
|
||||
/**
|
||||
* @var string|null
|
||||
*
|
||||
* @ORM\Column(name="title", type="text", nullable=true)
|
||||
*
|
||||
* @Groups({"entries_for_user", "export_all"})
|
||||
*/
|
||||
#[ORM\Column(name: 'title', type: 'text', nullable: true)]
|
||||
private $title;
|
||||
|
||||
/**
|
||||
|
@ -78,17 +72,16 @@ class Entry
|
|||
* @Assert\Url(
|
||||
* message = "The url '{{ value }}' is not a valid url",
|
||||
* )
|
||||
* @ORM\Column(name="url", type="text", nullable=true)
|
||||
*
|
||||
* @Groups({"entries_for_user", "export_all"})
|
||||
*/
|
||||
#[ORM\Column(name: 'url', type: 'text', nullable: true)]
|
||||
private $url;
|
||||
|
||||
/**
|
||||
* @var string|null
|
||||
*
|
||||
* @ORM\Column(name="hashed_url", type="string", length=40, nullable=true)
|
||||
*/
|
||||
#[ORM\Column(name: 'hashed_url', type: 'string', length: 40, nullable: true)]
|
||||
private $hashedUrl;
|
||||
|
||||
/**
|
||||
|
@ -96,10 +89,9 @@ class Entry
|
|||
*
|
||||
* @var string|null
|
||||
*
|
||||
* @ORM\Column(name="origin_url", type="text", nullable=true)
|
||||
*
|
||||
* @Groups({"entries_for_user", "export_all"})
|
||||
*/
|
||||
#[ORM\Column(name: 'origin_url', type: 'text', nullable: true)]
|
||||
private $originUrl;
|
||||
|
||||
/**
|
||||
|
@ -107,17 +99,15 @@ class Entry
|
|||
*
|
||||
* @var string|null
|
||||
*
|
||||
* @ORM\Column(name="given_url", type="text", nullable=true)
|
||||
*
|
||||
* @Groups({"entries_for_user", "export_all"})
|
||||
*/
|
||||
#[ORM\Column(name: 'given_url', type: 'text', nullable: true)]
|
||||
private $givenUrl;
|
||||
|
||||
/**
|
||||
* @var string|null
|
||||
*
|
||||
* @ORM\Column(name="hashed_given_url", type="string", length=40, nullable=true)
|
||||
*/
|
||||
#[ORM\Column(name: 'hashed_given_url', type: 'string', length: 40, nullable: true)]
|
||||
private $hashedGivenUrl;
|
||||
|
||||
/**
|
||||
|
@ -125,19 +115,17 @@ class Entry
|
|||
*
|
||||
* @Exclude
|
||||
*
|
||||
* @ORM\Column(name="is_archived", type="boolean")
|
||||
*
|
||||
* @Groups({"entries_for_user", "export_all"})
|
||||
*/
|
||||
#[ORM\Column(name: 'is_archived', type: 'boolean')]
|
||||
private $isArchived = false;
|
||||
|
||||
/**
|
||||
* @var \DateTimeInterface|null
|
||||
*
|
||||
* @ORM\Column(name="archived_at", type="datetime", nullable=true)
|
||||
*
|
||||
* @Groups({"entries_for_user", "export_all"})
|
||||
*/
|
||||
#[ORM\Column(name: 'archived_at', type: 'datetime', nullable: true)]
|
||||
private $archivedAt;
|
||||
|
||||
/**
|
||||
|
@ -145,135 +133,120 @@ class Entry
|
|||
*
|
||||
* @Exclude
|
||||
*
|
||||
* @ORM\Column(name="is_starred", type="boolean")
|
||||
*
|
||||
* @Groups({"entries_for_user", "export_all"})
|
||||
*/
|
||||
#[ORM\Column(name: 'is_starred', type: 'boolean')]
|
||||
private $isStarred = false;
|
||||
|
||||
/**
|
||||
* @var string|null
|
||||
*
|
||||
* @ORM\Column(name="content", type="text", nullable=true)
|
||||
*
|
||||
* @Groups({"entries_for_user", "export_all"})
|
||||
*/
|
||||
#[ORM\Column(name: 'content', type: 'text', nullable: true)]
|
||||
private $content;
|
||||
|
||||
/**
|
||||
* @var \DateTimeInterface
|
||||
*
|
||||
* @ORM\Column(name="created_at", type="datetime")
|
||||
*
|
||||
* @Groups({"entries_for_user", "export_all"})
|
||||
*/
|
||||
#[ORM\Column(name: 'created_at', type: 'datetime')]
|
||||
private $createdAt;
|
||||
|
||||
/**
|
||||
* @var \DateTimeInterface
|
||||
*
|
||||
* @ORM\Column(name="updated_at", type="datetime")
|
||||
*
|
||||
* @Groups({"entries_for_user", "export_all"})
|
||||
*/
|
||||
#[ORM\Column(name: 'updated_at', type: 'datetime')]
|
||||
private $updatedAt;
|
||||
|
||||
/**
|
||||
* @var \DateTimeInterface|null
|
||||
*
|
||||
* @ORM\Column(name="published_at", type="datetime", nullable=true)
|
||||
*
|
||||
* @Groups({"entries_for_user", "export_all"})
|
||||
*/
|
||||
#[ORM\Column(name: 'published_at', type: 'datetime', nullable: true)]
|
||||
private $publishedAt;
|
||||
|
||||
/**
|
||||
* @var array|null
|
||||
*
|
||||
* @ORM\Column(name="published_by", type="array", nullable=true)
|
||||
*
|
||||
* @Groups({"entries_for_user", "export_all"})
|
||||
*/
|
||||
#[ORM\Column(name: 'published_by', type: 'array', nullable: true)]
|
||||
private $publishedBy;
|
||||
|
||||
/**
|
||||
* @var \DateTimeInterface|null
|
||||
*
|
||||
* @ORM\Column(name="starred_at", type="datetime", nullable=true)
|
||||
*
|
||||
* @Groups({"entries_for_user", "export_all"})
|
||||
*/
|
||||
#[ORM\Column(name: 'starred_at', type: 'datetime', nullable: true)]
|
||||
private $starredAt;
|
||||
|
||||
/**
|
||||
* @ORM\OneToMany(targetEntity="Wallabag\Entity\Annotation", mappedBy="entry", cascade={"persist", "remove"})
|
||||
* @ORM\JoinTable
|
||||
*
|
||||
* @Groups({"entries_for_user", "export_all"})
|
||||
*/
|
||||
#[ORM\JoinTable]
|
||||
#[ORM\OneToMany(targetEntity: Annotation::class, mappedBy: 'entry', cascade: ['persist', 'remove'])]
|
||||
private $annotations;
|
||||
|
||||
/**
|
||||
* @var string|null
|
||||
*
|
||||
* @ORM\Column(name="mimetype", type="text", nullable=true)
|
||||
*
|
||||
* @Groups({"entries_for_user", "export_all"})
|
||||
*/
|
||||
#[ORM\Column(name: 'mimetype', type: 'text', nullable: true)]
|
||||
private $mimetype;
|
||||
|
||||
/**
|
||||
* @var string|null
|
||||
*
|
||||
* @ORM\Column(name="language", type="string", length=20, nullable=true)
|
||||
*
|
||||
* @Groups({"entries_for_user", "export_all"})
|
||||
*/
|
||||
#[ORM\Column(name: 'language', type: 'string', length: 20, nullable: true)]
|
||||
private $language;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*
|
||||
* @ORM\Column(name="reading_time", type="integer", nullable=false)
|
||||
*
|
||||
* @Groups({"entries_for_user", "export_all"})
|
||||
*/
|
||||
#[ORM\Column(name: 'reading_time', type: 'integer', nullable: false)]
|
||||
private $readingTime = 0;
|
||||
|
||||
/**
|
||||
* @var string|null
|
||||
*
|
||||
* @ORM\Column(name="domain_name", type="text", nullable=true)
|
||||
*
|
||||
* @Groups({"entries_for_user", "export_all"})
|
||||
*/
|
||||
#[ORM\Column(name: 'domain_name', type: 'text', nullable: true)]
|
||||
private $domainName;
|
||||
|
||||
/**
|
||||
* @var string|null
|
||||
*
|
||||
* @ORM\Column(name="preview_picture", type="text", nullable=true)
|
||||
*
|
||||
* @Groups({"entries_for_user", "export_all"})
|
||||
*/
|
||||
#[ORM\Column(name: 'preview_picture', type: 'text', nullable: true)]
|
||||
private $previewPicture;
|
||||
|
||||
/**
|
||||
* @var string|null
|
||||
*
|
||||
* @ORM\Column(name="http_status", type="string", length=3, nullable=true)
|
||||
*
|
||||
* @Groups({"entries_for_user", "export_all"})
|
||||
*/
|
||||
#[ORM\Column(name: 'http_status', type: 'string', length: 3, nullable: true)]
|
||||
private $httpStatus;
|
||||
|
||||
/**
|
||||
* @var array|null
|
||||
*
|
||||
* @ORM\Column(name="headers", type="array", nullable=true)
|
||||
*
|
||||
* @Groups({"entries_for_user", "export_all"})
|
||||
*/
|
||||
#[ORM\Column(name: 'headers', type: 'array', nullable: true)]
|
||||
private $headers;
|
||||
|
||||
/**
|
||||
|
@ -281,33 +254,23 @@ class Entry
|
|||
*
|
||||
* @Exclude
|
||||
*
|
||||
* @ORM\Column(name="is_not_parsed", type="boolean", options={"default": false})
|
||||
*
|
||||
* @Groups({"entries_for_user", "export_all"})
|
||||
*/
|
||||
#[ORM\Column(name: 'is_not_parsed', type: 'boolean', options: ['default' => false])]
|
||||
private $isNotParsed = false;
|
||||
|
||||
/**
|
||||
* @Exclude
|
||||
*
|
||||
* @ORM\ManyToOne(targetEntity="Wallabag\Entity\User", inversedBy="entries")
|
||||
*
|
||||
* @Groups({"export_all"})
|
||||
*/
|
||||
#[ORM\ManyToOne(targetEntity: User::class, inversedBy: 'entries')]
|
||||
private $user;
|
||||
|
||||
/**
|
||||
* @ORM\ManyToMany(targetEntity="Wallabag\Entity\Tag", inversedBy="entries", cascade={"persist"})
|
||||
* @ORM\JoinTable(
|
||||
* name="entry_tag",
|
||||
* joinColumns={
|
||||
* @ORM\JoinColumn(name="entry_id", referencedColumnName="id", onDelete="cascade")
|
||||
* },
|
||||
* inverseJoinColumns={
|
||||
* @ORM\JoinColumn(name="tag_id", referencedColumnName="id", onDelete="cascade")
|
||||
* }
|
||||
* )
|
||||
*/
|
||||
#[ORM\JoinTable(name: 'entry_tag')]
|
||||
#[ORM\JoinColumn(name: 'entry_id', referencedColumnName: 'id', onDelete: 'cascade')]
|
||||
#[ORM\InverseJoinColumn(name: 'tag_id', referencedColumnName: 'id', onDelete: 'cascade')]
|
||||
#[ORM\ManyToMany(targetEntity: Tag::class, inversedBy: 'entries', cascade: ['persist'])]
|
||||
private $tags;
|
||||
|
||||
/*
|
||||
|
|
|
@ -5,22 +5,21 @@ namespace Wallabag\Entity;
|
|||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Symfony\Bridge\RulerZ\Validator\Constraints as RulerZAssert;
|
||||
use Symfony\Component\Validator\Constraints as Assert;
|
||||
use Wallabag\Repository\IgnoreOriginInstanceRuleRepository;
|
||||
|
||||
/**
|
||||
* Ignore Origin rule.
|
||||
*
|
||||
* @ORM\Entity(repositoryClass="Wallabag\Repository\IgnoreOriginInstanceRuleRepository")
|
||||
* @ORM\Table(name="`ignore_origin_instance_rule`")
|
||||
*/
|
||||
#[ORM\Table(name: '`ignore_origin_instance_rule`')]
|
||||
#[ORM\Entity(repositoryClass: IgnoreOriginInstanceRuleRepository::class)]
|
||||
class IgnoreOriginInstanceRule implements IgnoreOriginRuleInterface, RuleInterface
|
||||
{
|
||||
/**
|
||||
* @var int
|
||||
*
|
||||
* @ORM\Column(name="id", type="integer")
|
||||
* @ORM\Id
|
||||
* @ORM\GeneratedValue(strategy="AUTO")
|
||||
*/
|
||||
#[ORM\Column(name: 'id', type: 'integer')]
|
||||
#[ORM\Id]
|
||||
#[ORM\GeneratedValue(strategy: 'AUTO')]
|
||||
private $id;
|
||||
|
||||
/**
|
||||
|
@ -32,8 +31,8 @@ class IgnoreOriginInstanceRule implements IgnoreOriginRuleInterface, RuleInterfa
|
|||
* allowed_variables={"host","_all"},
|
||||
* allowed_operators={"=","~"}
|
||||
* )
|
||||
* @ORM\Column(name="rule", type="string", nullable=false)
|
||||
*/
|
||||
#[ORM\Column(name: 'rule', type: 'string', nullable: false)]
|
||||
private $rule;
|
||||
|
||||
/**
|
||||
|
|
|
@ -5,22 +5,21 @@ namespace Wallabag\Entity;
|
|||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Symfony\Bridge\RulerZ\Validator\Constraints as RulerZAssert;
|
||||
use Symfony\Component\Validator\Constraints as Assert;
|
||||
use Wallabag\Repository\IgnoreOriginUserRuleRepository;
|
||||
|
||||
/**
|
||||
* Ignore Origin rule.
|
||||
*
|
||||
* @ORM\Entity(repositoryClass="Wallabag\Repository\IgnoreOriginUserRuleRepository")
|
||||
* @ORM\Table(name="`ignore_origin_user_rule`")
|
||||
*/
|
||||
#[ORM\Table(name: '`ignore_origin_user_rule`')]
|
||||
#[ORM\Entity(repositoryClass: IgnoreOriginUserRuleRepository::class)]
|
||||
class IgnoreOriginUserRule implements IgnoreOriginRuleInterface, RuleInterface
|
||||
{
|
||||
/**
|
||||
* @var int
|
||||
*
|
||||
* @ORM\Column(name="id", type="integer")
|
||||
* @ORM\Id
|
||||
* @ORM\GeneratedValue(strategy="AUTO")
|
||||
*/
|
||||
#[ORM\Column(name: 'id', type: 'integer')]
|
||||
#[ORM\Id]
|
||||
#[ORM\GeneratedValue(strategy: 'AUTO')]
|
||||
private $id;
|
||||
|
||||
/**
|
||||
|
@ -32,14 +31,12 @@ class IgnoreOriginUserRule implements IgnoreOriginRuleInterface, RuleInterface
|
|||
* allowed_variables={"host","_all"},
|
||||
* allowed_operators={"=","~"}
|
||||
* )
|
||||
* @ORM\Column(name="rule", type="string", nullable=false)
|
||||
*/
|
||||
#[ORM\Column(name: 'rule', type: 'string', nullable: false)]
|
||||
private $rule;
|
||||
|
||||
/**
|
||||
* @ORM\ManyToOne(targetEntity="Wallabag\Entity\Config", inversedBy="ignoreOriginRules")
|
||||
* @ORM\JoinColumn(nullable=false)
|
||||
*/
|
||||
#[ORM\JoinColumn(nullable: false)]
|
||||
#[ORM\ManyToOne(targetEntity: Config::class, inversedBy: 'ignoreOriginRules')]
|
||||
private $config;
|
||||
|
||||
/**
|
||||
|
|
|
@ -3,22 +3,21 @@
|
|||
namespace Wallabag\Entity;
|
||||
|
||||
use Craue\ConfigBundle\Entity\BaseSetting;
|
||||
use Craue\ConfigBundle\Repository\SettingRepository;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
|
||||
/**
|
||||
* InternalSetting.
|
||||
*
|
||||
* Re-define setting so we can override length attribute to fix utf8mb4 issue.
|
||||
*
|
||||
* @ORM\Entity(repositoryClass="Craue\ConfigBundle\Repository\SettingRepository")
|
||||
* @ORM\Table(name="`internal_setting`")
|
||||
*/
|
||||
#[ORM\Table(name: '`internal_setting`')]
|
||||
#[ORM\Entity(repositoryClass: SettingRepository::class)]
|
||||
class InternalSetting extends BaseSetting
|
||||
{
|
||||
/**
|
||||
* @var string|null
|
||||
*
|
||||
* @ORM\Column(name="value", type="string", nullable=true)
|
||||
*/
|
||||
#[ORM\Column(name: 'value', type: 'string', nullable: true)]
|
||||
protected $value;
|
||||
}
|
||||
|
|
|
@ -5,25 +5,24 @@ namespace Wallabag\Entity;
|
|||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Symfony\Component\Validator\Constraints as Assert;
|
||||
use Wallabag\Helper\EntityTimestampsTrait;
|
||||
use Wallabag\Repository\SiteCredentialRepository;
|
||||
|
||||
/**
|
||||
* SiteCredential.
|
||||
*
|
||||
* @ORM\Entity(repositoryClass="Wallabag\Repository\SiteCredentialRepository")
|
||||
* @ORM\Table(name="`site_credential`")
|
||||
* @ORM\HasLifecycleCallbacks()
|
||||
*/
|
||||
#[ORM\Table(name: '`site_credential`')]
|
||||
#[ORM\Entity(repositoryClass: SiteCredentialRepository::class)]
|
||||
#[ORM\HasLifecycleCallbacks]
|
||||
class SiteCredential
|
||||
{
|
||||
use EntityTimestampsTrait;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*
|
||||
* @ORM\Column(name="id", type="integer")
|
||||
* @ORM\Id
|
||||
* @ORM\GeneratedValue(strategy="AUTO")
|
||||
*/
|
||||
#[ORM\Column(name: 'id', type: 'integer')]
|
||||
#[ORM\Id]
|
||||
#[ORM\GeneratedValue(strategy: 'AUTO')]
|
||||
private $id;
|
||||
|
||||
/**
|
||||
|
@ -31,44 +30,40 @@ class SiteCredential
|
|||
*
|
||||
* @Assert\NotBlank()
|
||||
* @Assert\Length(max=255)
|
||||
* @ORM\Column(name="host", type="string", length=255)
|
||||
*/
|
||||
#[ORM\Column(name: 'host', type: 'string', length: 255)]
|
||||
private $host;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*
|
||||
* @Assert\NotBlank()
|
||||
* @ORM\Column(name="username", type="text")
|
||||
*/
|
||||
#[ORM\Column(name: 'username', type: 'text')]
|
||||
private $username;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*
|
||||
* @Assert\NotBlank()
|
||||
* @ORM\Column(name="password", type="text")
|
||||
*/
|
||||
#[ORM\Column(name: 'password', type: 'text')]
|
||||
private $password;
|
||||
|
||||
/**
|
||||
* @var \DateTime
|
||||
*
|
||||
* @ORM\Column(name="createdAt", type="datetime")
|
||||
*/
|
||||
#[ORM\Column(name: 'createdAt', type: 'datetime')]
|
||||
private $createdAt;
|
||||
|
||||
/**
|
||||
* @var \DateTime|null
|
||||
*
|
||||
* @ORM\Column(name="updated_at", type="datetime", nullable=true)
|
||||
*/
|
||||
#[ORM\Column(name: 'updated_at', type: 'datetime', nullable: true)]
|
||||
private $updatedAt;
|
||||
|
||||
/**
|
||||
* @ORM\ManyToOne(targetEntity="Wallabag\Entity\User", inversedBy="siteCredentials")
|
||||
* @ORM\JoinColumn(nullable=false)
|
||||
*/
|
||||
#[ORM\JoinColumn(nullable: false)]
|
||||
#[ORM\ManyToOne(targetEntity: User::class, inversedBy: 'siteCredentials')]
|
||||
private $user;
|
||||
|
||||
/*
|
||||
|
|
|
@ -8,50 +8,45 @@ use Gedmo\Mapping\Annotation as Gedmo;
|
|||
use JMS\Serializer\Annotation\ExclusionPolicy;
|
||||
use JMS\Serializer\Annotation\Expose;
|
||||
use JMS\Serializer\Annotation\XmlRoot;
|
||||
use Wallabag\Repository\TagRepository;
|
||||
|
||||
/**
|
||||
* Tag.
|
||||
*
|
||||
* @XmlRoot("tag")
|
||||
* @ORM\Table(
|
||||
* name="`tag`",
|
||||
* indexes={
|
||||
* @ORM\Index(columns={"label"}),
|
||||
* }
|
||||
* )
|
||||
* @ORM\Entity(repositoryClass="Wallabag\Repository\TagRepository")
|
||||
* @ExclusionPolicy("all")
|
||||
*/
|
||||
#[ORM\Table(name: '`tag`')]
|
||||
#[ORM\Index(columns: ['label'])]
|
||||
#[ORM\Entity(repositoryClass: TagRepository::class)]
|
||||
class Tag
|
||||
{
|
||||
/**
|
||||
* @var int
|
||||
*
|
||||
* @Expose
|
||||
* @ORM\Column(name="id", type="integer")
|
||||
* @ORM\Id
|
||||
* @ORM\GeneratedValue(strategy="AUTO")
|
||||
*/
|
||||
#[ORM\Column(name: 'id', type: 'integer')]
|
||||
#[ORM\Id]
|
||||
#[ORM\GeneratedValue(strategy: 'AUTO')]
|
||||
private $id;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*
|
||||
* @Expose
|
||||
* @ORM\Column(name="label", type="text")
|
||||
*/
|
||||
#[ORM\Column(name: 'label', type: 'text')]
|
||||
private $label;
|
||||
|
||||
/**
|
||||
* @Expose
|
||||
* @Gedmo\Slug(fields={"label"}, prefix="t:")
|
||||
* @ORM\Column(length=128, unique=true)
|
||||
*/
|
||||
#[ORM\Column(length: 128, unique: true)]
|
||||
private $slug;
|
||||
|
||||
/**
|
||||
* @ORM\ManyToMany(targetEntity="Entry", mappedBy="tags", cascade={"persist"})
|
||||
*/
|
||||
#[ORM\ManyToMany(targetEntity: Entry::class, mappedBy: 'tags', cascade: ['persist'])]
|
||||
private $entries;
|
||||
|
||||
public function __construct()
|
||||
|
|
|
@ -8,24 +8,23 @@ use JMS\Serializer\Annotation\Groups;
|
|||
use JMS\Serializer\Annotation\XmlRoot;
|
||||
use Symfony\Bridge\RulerZ\Validator\Constraints as RulerZAssert;
|
||||
use Symfony\Component\Validator\Constraints as Assert;
|
||||
use Wallabag\Repository\TaggingRuleRepository;
|
||||
|
||||
/**
|
||||
* Tagging rule.
|
||||
*
|
||||
* @XmlRoot("tagging_rule")
|
||||
* @ORM\Entity(repositoryClass="Wallabag\Repository\TaggingRuleRepository")
|
||||
* @ORM\Table(name="`tagging_rule`")
|
||||
* @ORM\Entity
|
||||
*/
|
||||
#[ORM\Table(name: '`tagging_rule`')]
|
||||
#[ORM\Entity(repositoryClass: TaggingRuleRepository::class)]
|
||||
class TaggingRule implements RuleInterface
|
||||
{
|
||||
/**
|
||||
* @var int
|
||||
*
|
||||
* @ORM\Column(name="id", type="integer")
|
||||
* @ORM\Id
|
||||
* @ORM\GeneratedValue(strategy="AUTO")
|
||||
*/
|
||||
#[ORM\Column(name: 'id', type: 'integer')]
|
||||
#[ORM\Id]
|
||||
#[ORM\GeneratedValue(strategy: 'AUTO')]
|
||||
private $id;
|
||||
|
||||
/**
|
||||
|
@ -37,27 +36,26 @@ class TaggingRule implements RuleInterface
|
|||
* allowed_variables={"title", "url", "isArchived", "isStarred", "content", "language", "mimetype", "readingTime", "domainName"},
|
||||
* allowed_operators={">", "<", ">=", "<=", "=", "is", "!=", "and", "not", "or", "matches", "notmatches"}
|
||||
* )
|
||||
* @ORM\Column(name="rule", type="string", nullable=false)
|
||||
*
|
||||
* @Groups({"export_tagging_rule"})
|
||||
*/
|
||||
#[ORM\Column(name: 'rule', type: 'string', nullable: false)]
|
||||
private $rule;
|
||||
|
||||
/**
|
||||
* @var array<string>
|
||||
*
|
||||
* @Assert\NotBlank()
|
||||
* @ORM\Column(name="tags", type="simple_array", nullable=false)
|
||||
*
|
||||
* @Groups({"export_tagging_rule"})
|
||||
*/
|
||||
#[ORM\Column(name: 'tags', type: 'simple_array', nullable: false)]
|
||||
private $tags = [];
|
||||
|
||||
/**
|
||||
* @Exclude
|
||||
*
|
||||
* @ORM\ManyToOne(targetEntity="Wallabag\Entity\Config", inversedBy="taggingRules")
|
||||
*/
|
||||
#[ORM\ManyToOne(targetEntity: Config::class, inversedBy: 'taggingRules')]
|
||||
private $config;
|
||||
|
||||
/**
|
||||
|
|
|
@ -16,18 +16,19 @@ use Scheb\TwoFactorBundle\Model\Google\TwoFactorInterface as GoogleTwoFactorInte
|
|||
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
|
||||
use Wallabag\Entity\Api\Client;
|
||||
use Wallabag\Helper\EntityTimestampsTrait;
|
||||
use Wallabag\Repository\UserRepository;
|
||||
|
||||
/**
|
||||
* User.
|
||||
*
|
||||
* @XmlRoot("user")
|
||||
* @ORM\Entity(repositoryClass="Wallabag\Repository\UserRepository")
|
||||
* @ORM\Table(name="`user`")
|
||||
* @ORM\HasLifecycleCallbacks()
|
||||
*
|
||||
* @UniqueEntity("email")
|
||||
* @UniqueEntity("username")
|
||||
*/
|
||||
#[ORM\Table(name: '`user`')]
|
||||
#[ORM\Entity(repositoryClass: UserRepository::class)]
|
||||
#[ORM\HasLifecycleCallbacks]
|
||||
class User extends BaseUser implements EmailTwoFactorInterface, GoogleTwoFactorInterface, BackupCodeInterface
|
||||
{
|
||||
use EntityTimestampsTrait;
|
||||
|
@ -36,10 +37,6 @@ class User extends BaseUser implements EmailTwoFactorInterface, GoogleTwoFactorI
|
|||
/**
|
||||
* @var int
|
||||
*
|
||||
* @ORM\Column(name="id", type="integer")
|
||||
* @ORM\Id
|
||||
* @ORM\GeneratedValue(strategy="AUTO")
|
||||
*
|
||||
* @OA\Property(
|
||||
* description="The unique numeric id of the user",
|
||||
* type="int",
|
||||
|
@ -48,21 +45,22 @@ class User extends BaseUser implements EmailTwoFactorInterface, GoogleTwoFactorI
|
|||
*
|
||||
* @Groups({"user_api", "user_api_with_client"})
|
||||
*/
|
||||
#[ORM\Column(name: 'id', type: 'integer')]
|
||||
#[ORM\Id]
|
||||
#[ORM\GeneratedValue(strategy: 'AUTO')]
|
||||
protected $id;
|
||||
|
||||
/**
|
||||
* @var string|null
|
||||
*
|
||||
* @ORM\Column(name="name", type="text", nullable=true)
|
||||
*
|
||||
* @OA\Property(
|
||||
* description="The personal Name of the user",
|
||||
* type="string",
|
||||
* example="Walla Baggger",
|
||||
* )
|
||||
*
|
||||
* @Groups({"user_api", "user_api_with_client"})
|
||||
*/
|
||||
#[ORM\Column(name: 'name', type: 'text', nullable: true)]
|
||||
protected $name;
|
||||
|
||||
/**
|
||||
|
@ -94,55 +92,45 @@ class User extends BaseUser implements EmailTwoFactorInterface, GoogleTwoFactorI
|
|||
/**
|
||||
* @var \DateTime
|
||||
*
|
||||
* @ORM\Column(name="created_at", type="datetime")
|
||||
*
|
||||
* @OA\Property(
|
||||
* description="Creation date of the user account. (In ISO 8601 format)",
|
||||
* type="string",
|
||||
* example="2023-06-27T19:25:44+0000",
|
||||
* )
|
||||
*
|
||||
* @Groups({"user_api", "user_api_with_client"})
|
||||
*/
|
||||
#[ORM\Column(name: 'created_at', type: 'datetime')]
|
||||
protected $createdAt;
|
||||
|
||||
/**
|
||||
* @var \DateTime
|
||||
*
|
||||
* @ORM\Column(name="updated_at", type="datetime")
|
||||
*
|
||||
* @OA\Property(
|
||||
* description="Update date of the user account. (In ISO 8601 format)",
|
||||
* type="string",
|
||||
* example="2023-06-27T19:37:30+0000",
|
||||
* )
|
||||
*
|
||||
* @Groups({"user_api", "user_api_with_client"})
|
||||
*/
|
||||
#[ORM\Column(name: 'updated_at', type: 'datetime')]
|
||||
protected $updatedAt;
|
||||
|
||||
/**
|
||||
* @ORM\OneToMany(targetEntity="Wallabag\Entity\Entry", mappedBy="user", cascade={"remove"})
|
||||
*/
|
||||
#[ORM\OneToMany(targetEntity: Entry::class, mappedBy: 'user', cascade: ['remove'])]
|
||||
protected $entries;
|
||||
|
||||
/**
|
||||
* @ORM\OneToOne(targetEntity="Wallabag\Entity\Config", mappedBy="user", cascade={"remove"})
|
||||
*/
|
||||
#[ORM\OneToOne(targetEntity: Config::class, mappedBy: 'user', cascade: ['remove'])]
|
||||
protected $config;
|
||||
|
||||
/**
|
||||
* @var ArrayCollection&iterable<SiteCredential>
|
||||
*
|
||||
* @ORM\OneToMany(targetEntity="Wallabag\Entity\SiteCredential", mappedBy="user", cascade={"remove"})
|
||||
*/
|
||||
#[ORM\OneToMany(targetEntity: SiteCredential::class, mappedBy: 'user', cascade: ['remove'])]
|
||||
protected $siteCredentials;
|
||||
|
||||
/**
|
||||
* @var ArrayCollection&iterable<Client>
|
||||
*
|
||||
* @ORM\OneToMany(targetEntity="Wallabag\Entity\Api\Client", mappedBy="user", cascade={"remove"})
|
||||
*/
|
||||
#[ORM\OneToMany(targetEntity: Client::class, mappedBy: 'user', cascade: ['remove'])]
|
||||
protected $clients;
|
||||
|
||||
/**
|
||||
|
@ -158,28 +146,22 @@ class User extends BaseUser implements EmailTwoFactorInterface, GoogleTwoFactorI
|
|||
*/
|
||||
protected $default_client;
|
||||
|
||||
/**
|
||||
* @ORM\Column(type="integer", nullable=true)
|
||||
*/
|
||||
#[ORM\Column(type: 'integer', nullable: true)]
|
||||
private $authCode;
|
||||
|
||||
/**
|
||||
* @ORM\Column(name="googleAuthenticatorSecret", type="string", nullable=true)
|
||||
*/
|
||||
#[ORM\Column(name: 'googleAuthenticatorSecret', type: 'string', nullable: true)]
|
||||
private $googleAuthenticatorSecret;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*
|
||||
* @ORM\Column(type="json", nullable=true)
|
||||
*/
|
||||
#[ORM\Column(type: 'json', nullable: true)]
|
||||
private $backupCodes;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*
|
||||
* @ORM\Column(type="boolean")
|
||||
*/
|
||||
#[ORM\Column(type: 'boolean')]
|
||||
private $emailTwoFactor = false;
|
||||
|
||||
public function __construct()
|
||||
|
|
|
@ -9,10 +9,8 @@ use Doctrine\ORM\Mapping as ORM;
|
|||
*/
|
||||
trait EntityTimestampsTrait
|
||||
{
|
||||
/**
|
||||
* @ORM\PrePersist
|
||||
* @ORM\PreUpdate
|
||||
*/
|
||||
#[ORM\PrePersist]
|
||||
#[ORM\PreUpdate]
|
||||
public function timestamps()
|
||||
{
|
||||
if (null === $this->createdAt) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue