ungdev / etuutt-api

Users, classes, assos : An awesome API to rule them all
MIT License
2 stars 2 forks source link

Refactoring UUID, Timestamps and Softdelete using PHP Traits #45

Closed ThomasRitaine closed 1 year ago

ThomasRitaine commented 1 year ago

Description

Salut ! Voici une bonne PR de refactoring qui mutualise pas mal de ligne de code, car toutes les déclarations suivantes étaient les mêmes :

J'ai donc tout placé dans des traits qui sont utilisés par les entités qui en ont besoin.

Petit inconvénient Quand une entité veut exposer via API platform un champ qui dans dans un trait, par exemple son UUID, il faut redéfinir la propriété id pour y mettre l'attribut PHP Groups. Le id qu'on définit dans l'entité va passer au redéfinir de celui du trait, donc on doit repréciser tous @ORM et @Assert. Un exemple :

/**
 * @ORM\Id
 * @ORM\Column(type="uuid", unique=true)
 * @ORM\GeneratedValue(strategy="CUSTOM")
 * @ORM\CustomIdGenerator(class=UuidGenerator::class)
 *
 * @Assert\Uuid
 */
#[Groups([
    'event:read:some',
    'event:read:one',
    'asso:read:one',
])]
private $id;

Checklist

Test

Implementation

Tools

Documentation

TeddyRoncin commented 1 year ago

Giga smart, je regarde ça quand j'ai le temps, probablement ce soir