Skip to content

vardumper/IbexaAutomaticMigrationsBundle

Repository files navigation

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)

About

This Bundle eliminates the need to manually create migration files for Ibexa DXP on the command line. When configurations change, it auto-generates the respective migrations. Supports kaliop, tanoconsulting and Ibexa enterprise edition migrations.

Topics

Resources

Stars

Watchers

Forks

Contributors