chill-bundles/MIGRATION.md
2024-09-19 13:40:09 +00:00

6.1 KiB

Switch to symfony 5.0

  • the tag chill.role is now renamed to chill_main.provide_role.

    Note: It is not necessary to apply this tag on service definition: the tag is automatically applyied if the service implements \Chill\MainBundle\Security\ProvideRoleInterface.

  • those annotation can be converted to attribute:

    • Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\AccompanyingPeriodValidity
    • Chill\PersonBundle\Validator\Constraints\Household\HouseholdMembershipSequential
    • Chill\PersonBundle\Validator\Constraints\Household\MaxHolder
    • Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\ConfidentialCourseMustHaveReferrer
    • Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\LocationValidity
    • Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\ParticipationOverlap
    • Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\ResourceDuplicateCheck
    • Chill\PersonBundle\Validator\Constraints\Person\Birthdate
    • Chill\PersonBundle\Validator\Constraints\Person\PersonHasCenter
    • Chill\PersonBundle\Validator\Constraints\Relationship\RelationshipNoDuplicate
    • Chill\ActivityBundle\Validator\Constraints\ActivityValidity
    • Chill\DocStoreBundle\Validator\Constraints\AsyncFileExists
    • Chill\MainBundle\Validation\Constraint\PhonenumberConstraint
    • Chill\MainBundle\Validator\Constraints\Entity\UserCircleConsistency
    • Chill\MainBundle\Workflow\Validator\EntityWorkflowCreation

    Here is the rector rule that can be used to switch attributes to annotations:

      $rectorConfig->ruleWithConfiguration(\Rector\Php80\Rector\Class_\AnnotationToAttributeRector::class, [
          new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\AccompanyingPeriodValidity'),
          new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\Household\HouseholdMembershipSequential'),
          new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\Household\MaxHolder'),
          new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\ConfidentialCourseMustHaveReferrer'),
          new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\LocationValidity'),
          new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\ParticipationOverlap'),
          new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\ResourceDuplicateCheck'),
          new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\Person\Birthdate'),
          new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\Person\PersonHasCenter'),
          new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\PersonBundle\Validator\Constraints\Relationship\RelationshipNoDuplicate'),
          new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\ActivityBundle\Validator\Constraints\ActivityValidity'),
          new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\DocStoreBundle\Validator\Constraints\AsyncFileExists'),
          new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\MainBundle\Validation\Constraint\PhonenumberConstraint'),
          new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\MainBundle\Validator\Constraints\Entity\UserCircleConsistency'),
          new \Rector\Php80\ValueObject\AnnotationToAttribute('Chill\MainBundle\Workflow\Validator\EntityWorkflowCreation'),
      ]);
    
  • to keep cleaner definition in container's dependency injection and framework bundle, the definition of crud or api requires to define explicitly a controller.

    Before:

    $container->prependExtensionConfig('chill_main', [
        'apis' => [
            [
                'class' => ThirdParty::class,
                'name' => 'thirdparty',
                'base_path' => '/api/1.0/thirdparty/thirdparty',
                'actions' => [
                    '_entity' => [
                        'methods' => [
                            Request::METHOD_GET => true,
                            Request::METHOD_HEAD => true,
                            Request::METHOD_POST => true,
                            Request::METHOD_PUT => true,
                            Request::METHOD_PATCH => true,
                        ],
                        'roles' => [
                            Request::METHOD_GET => ThirdPartyVoter::SHOW,
                            Request::METHOD_HEAD => ThirdPartyVoter::SHOW,
                            Request::METHOD_POST => ThirdPartyVoter::CREATE,
                            Request::METHOD_PUT => ThirdPartyVoter::CREATE,
                            Request::METHOD_PATCH => ThirdPartyVoter::CREATE,
                        ],
                    ],
                ],
            ],
        ],
    ]);
    
    After:
    
    ```php
    $container->prependExtensionConfig('chill_main', [
        'apis' => [
            [
                'class' => ThirdParty::class,
                'controller' => ThirdPartyApiController::class,
                'name' => 'thirdparty',
                'base_path' => '/api/1.0/thirdparty/thirdparty',
                'actions' => [
                    '_entity' => [
                        'methods' => [
                            Request::METHOD_GET => true,
                            Request::METHOD_HEAD => true,
                            Request::METHOD_POST => true,
                            Request::METHOD_PUT => true,
                            Request::METHOD_PATCH => true,
                        ],
                        'roles' => [
                            Request::METHOD_GET => ThirdPartyVoter::SHOW,
                            Request::METHOD_HEAD => ThirdPartyVoter::SHOW,
                            Request::METHOD_POST => ThirdPartyVoter::CREATE,
                            Request::METHOD_PUT => ThirdPartyVoter::CREATE,
                            Request::METHOD_PATCH => ThirdPartyVoter::CREATE,
                        ],
                    ],
                ],
            ],
        ],
    ]);