From 810002ccbf505f8773a0e2f111680ddcd89f04ea Mon Sep 17 00:00:00 2001 From: Christophe Coevoet Date: Thu, 10 Oct 2024 15:08:37 +0200 Subject: [PATCH] Add a recipe for DoctrineBundle 2.13 This recipe avoids getting deprecations from the ORM by turning on new settings. For the identity generation precedence, using `identity` is the best choice for new projects (especially when using DBAL 4.x from the start). --- .../2.13/config/packages/doctrine.yaml | 54 +++++++++++++++++++ doctrine/doctrine-bundle/2.13/manifest.json | 54 +++++++++++++++++++ .../doctrine-bundle/2.13/post-install.txt | 4 ++ .../2.13/src/Entity/.gitignore | 0 .../2.13/src/Repository/.gitignore | 0 5 files changed, 112 insertions(+) create mode 100644 doctrine/doctrine-bundle/2.13/config/packages/doctrine.yaml create mode 100644 doctrine/doctrine-bundle/2.13/manifest.json create mode 100644 doctrine/doctrine-bundle/2.13/post-install.txt create mode 100644 doctrine/doctrine-bundle/2.13/src/Entity/.gitignore create mode 100644 doctrine/doctrine-bundle/2.13/src/Repository/.gitignore diff --git a/doctrine/doctrine-bundle/2.13/config/packages/doctrine.yaml b/doctrine/doctrine-bundle/2.13/config/packages/doctrine.yaml new file mode 100644 index 000000000..25138b979 --- /dev/null +++ b/doctrine/doctrine-bundle/2.13/config/packages/doctrine.yaml @@ -0,0 +1,54 @@ +doctrine: + dbal: + url: '%env(resolve:DATABASE_URL)%' + + # IMPORTANT: You MUST configure your server version, + # either here or in the DATABASE_URL env var (see .env file) + #server_version: '16' + + profiling_collect_backtrace: '%kernel.debug%' + use_savepoints: true + orm: + auto_generate_proxy_classes: true + enable_lazy_ghost_objects: true + report_fields_where_declared: true + validate_xml_mapping: true + naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware + identity_generation_preferences: + Doctrine\DBAL\Platforms\PostgreSQLPlatform: identity + auto_mapping: true + mappings: + App: + type: attribute + is_bundle: false + dir: '%kernel.project_dir%/src/Entity' + prefix: 'App\Entity' + alias: App + controller_resolver: + auto_mapping: false + +when@test: + doctrine: + dbal: + # "TEST_TOKEN" is typically set by ParaTest + dbname_suffix: '_test%env(default::TEST_TOKEN)%' + +when@prod: + doctrine: + orm: + auto_generate_proxy_classes: false + proxy_dir: '%kernel.build_dir%/doctrine/orm/Proxies' + query_cache_driver: + type: pool + pool: doctrine.system_cache_pool + result_cache_driver: + type: pool + pool: doctrine.result_cache_pool + + framework: + cache: + pools: + doctrine.result_cache_pool: + adapter: cache.app + doctrine.system_cache_pool: + adapter: cache.system diff --git a/doctrine/doctrine-bundle/2.13/manifest.json b/doctrine/doctrine-bundle/2.13/manifest.json new file mode 100644 index 000000000..f339784a1 --- /dev/null +++ b/doctrine/doctrine-bundle/2.13/manifest.json @@ -0,0 +1,54 @@ +{ + "bundles": { + "Doctrine\\Bundle\\DoctrineBundle\\DoctrineBundle": ["all"] + }, + "copy-from-recipe": { + "config/": "%CONFIG_DIR%/", + "src/": "%SRC_DIR%/" + }, + "env": { + "#1": "Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url", + "#2": "IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml", + "#3": "", + "#4": "DATABASE_URL=\"sqlite:///%kernel.project_dir%/var/data.db\"", + "#5": "DATABASE_URL=\"mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8.0.32&charset=utf8mb4\"", + "#6": "DATABASE_URL=\"mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=10.11.2-MariaDB&charset=utf8mb4\"", + "DATABASE_URL": "postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=16&charset=utf8" + }, + "dockerfile": [ + "RUN install-php-extensions pdo_pgsql" + ], + "docker-compose": { + "docker-compose.yml": { + "services": [ + "database:", + " image: postgres:${POSTGRES_VERSION:-16}-alpine", + " environment:", + " POSTGRES_DB: ${POSTGRES_DB:-app}", + " # You should definitely change the password in production", + " POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-!ChangeMe!}", + " POSTGRES_USER: ${POSTGRES_USER:-app}", + " healthcheck:", + " test: [\"CMD\", \"pg_isready\", \"-d\", \"${POSTGRES_DB:-app}\", \"-U\", \"${POSTGRES_USER:-app}\"]", + " timeout: 5s", + " retries: 5", + " start_period: 60s", + " volumes:", + " - database_data:/var/lib/postgresql/data:rw", + " # You may use a bind-mounted host directory instead, so that it is harder to accidentally remove the volume and lose all your data!", + " # - ./docker/db/data:/var/lib/postgresql/data:rw" + ], + "volumes": ["database_data:"] + }, + "docker-compose.override.yml": { + "services": [ + "database:", + " ports:", + " - \"5432\"" + ] + } + }, + "conflict": { + "symfony/framework-bundle": "<7.1" + } +} diff --git a/doctrine/doctrine-bundle/2.13/post-install.txt b/doctrine/doctrine-bundle/2.13/post-install.txt new file mode 100644 index 000000000..6104a6dc2 --- /dev/null +++ b/doctrine/doctrine-bundle/2.13/post-install.txt @@ -0,0 +1,4 @@ + * Modify your DATABASE_URL config in .env + + * Configure the driver (postgresql) and + server_version (16) in config/packages/doctrine.yaml diff --git a/doctrine/doctrine-bundle/2.13/src/Entity/.gitignore b/doctrine/doctrine-bundle/2.13/src/Entity/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/doctrine/doctrine-bundle/2.13/src/Repository/.gitignore b/doctrine/doctrine-bundle/2.13/src/Repository/.gitignore new file mode 100644 index 000000000..e69de29bb