Repository navigation
Releases: SocioLink/ApiResourceBundle
Release list
v2.2.0
Ajouté
Chaque paramètre de filtrage généré dans un catalogue <Entité>Filters reçoit l'argument description: '' sur son QueryParameter, la description (en français) étant laissée vide, à compléter d'après la feuille de route front. Les paramètres système status et realm (classes de l'application) en sont dispensés. Un test d'architecture côté application (qui refuse une description vide) garantit que tout nouveau filtre est documenté avant d'être exposé. Prolonge à la couche filtres le scaffold #[ApiProperty(description: '')] des DTO (2.1.0).
v2.1.0
Ajouté
Chaque propriété des DTO générés (création, mise à jour, bascule de booléens, DTO individuel par booléen) reçoit l'attribut #[ApiProperty(description: '')], avec l'import ApiPlatform\Metadata\ApiProperty. La description, en français, est laissée vide, à compléter d'après la feuille de route front. Un test d'architecture côté application (qui refuse une description vide) garantit ainsi que tout nouveau DTO est documenté avant d'être exposé.
v2.0.0
⚠ Version majeure
Les filtres ne sont plus des parameters: [...] posés sur #[ApiResource] : chaque entité reçoit un catalogue de filtres <Entité>Filters que GetCollection et QueryCollection désignent par extraProperties: ['collection_filters' => <Entité>Filters::class], comme les API EasyTax.
Modifié
- Un champ
statusproduitStatusParameter(required: true); un champrealm(relation ToOne ou colonneuuid) produitRealmParameter(required: true). - Les tests générés (
--with-tests) ajoutent ces paramètres obligatoires aux requêtes de collection. - Les sous-ressources désignent le catalogue de l'entité enfant ;
--only-resourceet--allgénèrent aussi le catalogue. - Le catalogue n'est écrit que si l'injection dans l'entité a lieu (plus de fichier orphelin).
Ajouté
- Générateur de catalogue (
FilterCatalogueBuilder, gabaritfilters.php.twig). - Configuration
filters.namespace,filters.catalogue_interface,filters.status_parameter,filters.realm_parameter.
Migrer depuis 1.x
L'application doit fournir le contrat des catalogues, StatusParameter, RealmParameter et la décoration qui lit collection_filters, puis régénérer avec --force. Les entités générées en 1.x continuent de fonctionner tant qu'elles ne sont pas régénérées. Voir le README et le CHANGELOG.
v1.0.0
Première version publiée. Les projets qui suivaient dev-main peuvent passer à la contrainte ^1.0.
Ajouté
- Commande
generate:resource(aliassociolink:api-resource:generate) : génère depuis les entités
Doctrine les DTOs (création, modification, toggle, booléens détachés, upload VichUploader), les State
Processors et Providers, les tests fonctionnels (--with-tests) et injecte#[ApiResource]dans l'entité. - Filtres générés en paramètres
#[QueryParameter]surGetCollection(etQueryCollectionavec
--graphql-filters) ; migration des anciens#[ApiFilter]de classe avec--force. - Sous-ressources pour les relations
OneToMany(--sub-resources). - Options de génération :
--force,--reinit,--dry-run,--preview,--only-resource,--all,
--with-provider,--toggle-boolean,--detach-boolean,--with-mercure,--public. - Configuration
sociolink_api_resource.*(espaces de noms, dossiers, rôles, champs système), dont
custom_typespour mapper des types Doctrine personnalisés ;phone_number
(odolbeau/phone-number-bundle) reconnu sans configuration. - Détection dynamique du champ identifiant des entités (plus de
idcodé en dur). - Recette Symfony Flex (
recipe/, compilée dansflex/parrecipe/build.php). - CI GitHub Actions : PHP 8.5 × Symfony 7.4 / 8.0 / 8.1, et dépendances minimales (
--prefer-lowest).
Corrigé
- La ressource principale est toujours le premier
#[ApiResource]de la classe, et chaque sous-ressource
porte unshortNamepropre ({Parent}{Enfant}) : API Platform ne renomme plus la ressource principale
(Place2, URI/activity/place2s). - Une sous-ressource existante est reconnue même dans un fichier réaligné par l'IDE
(uriTemplate : '…') :--forcela remplace au lieu de la dupliquer. --force --reinitretire les sous-ressources dont la relation n'existe plus sur l'entité.