Skip to content

Latest commit

 

History

History
154 lines (120 loc) · 6.09 KB

File metadata and controls

154 lines (120 loc) · 6.09 KB
Ibexa Logo Database Migrations Icon

IbexaAutomaticMigrationsBundle

Latest Stable Version Total Downloads Static Badge Code Coverage

This is a bundle for Ibexa DXP. It automatically creates migrations for content types and content type groups. The goal is to eliminate the need to manually create migrations or test them – instead have Ibexa auto-generate them for us whenever content types change. Migrations are created in the default locations (in src/Migrations/Ibexa/migrations when using ibexa/migrations or in src/MigrationsDefinitions when using kaliop, tanoconsulting, mrk-te open source migration bundle).

Requirements

  • Ibexa DXP >= v5.0
  • Ibexa DXP >= v4.4 (untested)
  • A migrations bundle if using Ibexa OSS

Features

  • Automatically create migrations when changes are made in the admin panel
  • Supports Ibexa DXP v5.x Headless, Experience and Commerce editions via ibexa/migrations
  • Supports Ibexa DXP v5.x. Open Source Edition via mrk-te/ibexa-migration-bundle2

Supported Types of Migrations

  • Content Type Group
  • Content Type
  • Language
  • Object State Group
  • Object State
  • Role
  • Section
  • URL Wildcards
  • URL Manager

Installation

With Symfony Flex (recommended)

Add the recipe endpoint to your project's composer.json once:

"extra": {
    "symfony": {
        "endpoint": [
            "https://raw.githubusercontent.com/vardumper/IbexaAutomaticMigrationsBundle/main/flex/",
            "flex://defaults"
        ]
    }
}

Then install the bundle:

composer require vardumper/ibexa-automatic-migrations-bundle

Symfony Flex will automatically:

  • Register the bundle in config/bundles.php
  • Copy a default configuration to config/packages/ibexa_automatic_migrations.yaml

Without Symfony Flex (manual)

1. Install the bundle

composer require vardumper/ibexa-automatic-migrations-bundle

2. Register the bundle in config/bundles.php

Remember that even though the bundle is activated for all environments, migration files are only created when APP_ENV is set to dev.

return [
    // ...
    vardumper\IbexaAutomaticMigrationsBundle\IbexaAutomaticMigrationsBundle::class => ['all' => true],
];

3. Create the package configuration

Create config/packages/ibexa_automatic_migrations.yaml:

ibexa_automatic_migrations:
    enabled: true
    types:
        content: false
        content_type: true
        content_type_group: true
        section: false
        object_state: false
        object_state_group: false
        user: false
        user_group: false
        role: false
        language: false
        url: false

4. Register the backend controller routes

Create config/routes/dev/ibexa_automatic_migrations.yaml:

ibexa_automatic_migrations:
    resource: '@IbexaAutomaticMigrationsBundle/src/Controller/'
    type: attribute

To configure which migration types are generated, go to Admin > Migrations > Settings.

Testing

This bundle uses Pest for testing.

Running Tests

First, install the development dependencies:

composer install --dev

Then run the tests:

./vendor/bin/pest

Coverage Report

You can also generate a coverage report by running the following command.

XDEBUG_MODE=coverage vendor/bin/pest --coverage-html=coverage-report

Roadmap

  • Allow admins to execute pending migrations in the admin panel
  • Support more types of migrations, not only content types are relevant, but Languages, Sections, etc.
  • Determine or allow configuring which Migration Bundle one wants to use (if kaliop and ibexa bundles are installed)