diff --git a/src/DependencyInjection/Configuration.php b/src/DependencyInjection/Configuration.php index b9b1275..cbde209 100644 --- a/src/DependencyInjection/Configuration.php +++ b/src/DependencyInjection/Configuration.php @@ -14,6 +14,9 @@ public function getConfigTreeBuilder(): TreeBuilder $rootNode ->children() + ->booleanNode('use_interfaces') + ->defaultFalse() + ->end() ->arrayNode('bundles') ->defaultValue(['App']) ->requiresAtLeastOneElement() diff --git a/src/DependencyInjection/QueryBuilderRepositoryGeneratorExtension.php b/src/DependencyInjection/QueryBuilderRepositoryGeneratorExtension.php index 71695fe..b611bb1 100644 --- a/src/DependencyInjection/QueryBuilderRepositoryGeneratorExtension.php +++ b/src/DependencyInjection/QueryBuilderRepositoryGeneratorExtension.php @@ -37,6 +37,7 @@ public function load(array $configs, ContainerBuilder $container) $container->setParameter('tbn_qbrg.generator.template.entity_configuration', $entityConfiguration); $container->setParameter('tbn_qbrg.generator.template.repository_extension', $repositoryExtensions); + $container->setParameter('tbn_qbrg.generator.template.use_interfaces', $config['use_interfaces']); //the templates $container->setParameter('tbn_qbrg.generator.template.top_repository', $config['templates']['top_repository']); diff --git a/src/Generator/TemplateService.php b/src/Generator/TemplateService.php index d338688..5420935 100644 --- a/src/Generator/TemplateService.php +++ b/src/Generator/TemplateService.php @@ -9,6 +9,7 @@ class TemplateService { public function __construct( + private bool $useInterfaces, private $topRepositoryTemple, private $columnTemplate, private $bottomRepositoryTemplate, @@ -30,6 +31,7 @@ public function renderTopClass( ): string { $topClassparameter = array( 'namespace' => $namespace, + 'useInterfaces' => $this->useInterfaces, 'entityClasspath' => $entityClasspath, 'entityClassname' => $entityClassname, 'extendClass' => $extendClass, diff --git a/src/Resources/config/services.yml b/src/Resources/config/services.yml index 2327976..7bb264d 100644 --- a/src/Resources/config/services.yml +++ b/src/Resources/config/services.yml @@ -18,6 +18,7 @@ services: Tbn\QueryBuilderRepositoryGeneratorBundle\Generator\TemplateService: class: Tbn\QueryBuilderRepositoryGeneratorBundle\Generator\TemplateService arguments: + - "%tbn_qbrg.generator.template.use_interfaces%" - "%tbn_qbrg.generator.template.top_repository%" - "%tbn_qbrg.generator.template.column%" - "%tbn_qbrg.generator.template.bottom_repository%" diff --git a/src/Resources/views/Generator/TopRepositoryTemplate.html.twig b/src/Resources/views/Generator/TopRepositoryTemplate.html.twig index 2a576df..9cf49a5 100644 --- a/src/Resources/views/Generator/TopRepositoryTemplate.html.twig +++ b/src/Resources/views/Generator/TopRepositoryTemplate.html.twig @@ -15,14 +15,16 @@ use Doctrine\Persistence\ManagerRegistry; use Symfony\Component\Uid\Uuid; use Symfony\Contracts\Cache\CacheInterface; use Symfony\Contracts\Cache\ItemInterface; +{% if useInterfaces %} use Tbn\QueryBuilderRepositoryGeneratorBundle\Interface\FilterByInterface; use Tbn\QueryBuilderRepositoryGeneratorBundle\Interface\FilterInInterface; +{% endif %} /** * Generated class for filter query builders * */ -class {{ entityClassname }}Base extends {{ extendClass }} implements FilterByInterface, FilterInInterface +class {{ entityClassname }}Base extends {{ extendClass }}{% if useInterfaces %} implements FilterByInterface, FilterInInterface{% endif %} { const NAME = '{{ entityDql }}'; protected static $parameterIndex = 0; diff --git a/tests/Repository/MyClassRepositoryBase.php b/tests/Repository/MyClassRepositoryBase.php index d40db2b..0cee23a 100644 --- a/tests/Repository/MyClassRepositoryBase.php +++ b/tests/Repository/MyClassRepositoryBase.php @@ -15,15 +15,12 @@ use Symfony\Component\Uid\Uuid; use Symfony\Contracts\Cache\CacheInterface; use Symfony\Contracts\Cache\ItemInterface; -use Tbn\QueryBuilderRepositoryGeneratorBundle\Interface\FilterByInterface; -use Tbn\QueryBuilderRepositoryGeneratorBundle\Interface\FilterInInterface; /** * Generated class for filter query builders * */ -class MyClassRepositoryBase extends \Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository implements FilterByInterface, FilterInInterface -{ +class MyClassRepositoryBase extends \Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository{ const NAME = 'myClass'; protected static $parameterIndex = 0; diff --git a/tests/Service/ExpectedMyClassRepositoryBase.txt b/tests/Service/ExpectedMyClassRepositoryBase.txt index d40db2b..0cee23a 100644 --- a/tests/Service/ExpectedMyClassRepositoryBase.txt +++ b/tests/Service/ExpectedMyClassRepositoryBase.txt @@ -15,15 +15,12 @@ use Doctrine\Persistence\ManagerRegistry; use Symfony\Component\Uid\Uuid; use Symfony\Contracts\Cache\CacheInterface; use Symfony\Contracts\Cache\ItemInterface; -use Tbn\QueryBuilderRepositoryGeneratorBundle\Interface\FilterByInterface; -use Tbn\QueryBuilderRepositoryGeneratorBundle\Interface\FilterInInterface; /** * Generated class for filter query builders * */ -class MyClassRepositoryBase extends \Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository implements FilterByInterface, FilterInInterface -{ +class MyClassRepositoryBase extends \Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository{ const NAME = 'myClass'; protected static $parameterIndex = 0;