Skip to content

Releases: SocioLink/ApiResourceBundle

v2.2.0

Choose a tag to compare

@GenieMicrobe GenieMicrobe released this 19 Oct 21:56

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

Choose a tag to compare

@GenieMicrobe GenieMicrobe released this 19 Oct 21:56

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

Choose a tag to compare

@GenieMicrobe GenieMicrobe released this 04 Oct 15:46

⚠ 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 status produit StatusParameter(required: true) ; un champ realm (relation ToOne ou colonne uuid) produit RealmParameter(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-resource et --all gé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, gabarit filters.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

Choose a tag to compare

@GenieMicrobe GenieMicrobe released this 30 Sep 18:40

Première version publiée. Les projets qui suivaient dev-main peuvent passer à la contrainte ^1.0.

Ajouté

  • Commande generate:resource (alias sociolink: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] sur GetCollection (et QueryCollection avec
    --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_types pour 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 id codé en dur).
  • Recette Symfony Flex (recipe/, compilée dans flex/ par recipe/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 un shortName propre ({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 : '…') : --force la remplace au lieu de la dupliquer.
  • --force --reinit retire les sous-ressources dont la relation n'existe plus sur l'entité.