<!--
  ~ This file is part of the Fidry\AliceDataFixtures package.
  ~
  ~ (c) Théo FIDRY <theo.fidry@gmail.com>
  ~
  ~ For the full copyright and license information, please view the LICENSE
  ~ file that was distributed with this source code.
  -->

<container xmlns="http://symfony.com/schema/dic/services"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">

    <parameters>
        <parameter key="fidry_alice_data_fixtures.eloquent.migration_path">migrations</parameter>
    </parameters>

    <services>

        <!-- Loaders -->
        <service id="fidry_alice_data_fixtures.loader.eloquent"
                 alias="fidry_alice_data_fixtures.eloquent.purger_loader"
                 public="true" />

        <service id="fidry_alice_data_fixtures.eloquent.loader"
                 alias="fidry_alice_data_fixtures.loader.eloquent">
            <!-- Deprecated (see DeprecateServicesPass) -->
        </service>

        <service id="fidry_alice_data_fixtures.eloquent.purger_loader"
                 class="Fidry\AliceDataFixtures\Loader\PurgerLoader"
                 lazy="true" >
            <argument type="service" id="fidry_alice_data_fixtures.eloquent.persister_loader" />
            <argument type="service" id="fidry_alice_data_fixtures.persistence.purger_factory.eloquent" />
            <argument type="string">%fidry_alice_data_fixtures.default_purge_mode%</argument>
            <argument type="service" id="logger" on-invalid="ignore" />
        </service>

        <service id="fidry_alice_data_fixtures.eloquent.persister_loader"
                 class="Fidry\AliceDataFixtures\Loader\PersisterLoader"
                 lazy="true" >
            <argument type="service" id="fidry_alice_data_fixtures.loader.simple" />
            <argument type="service" id="fidry_alice_data_fixtures.persistence.persister.eloquent" />
            <argument type="service" id="logger" on-invalid="ignore"/>
            <!-- Processors are injected via a Compiler pass -->
        </service>


        <!-- Purger Factory -->

        <service id="fidry_alice_data_fixtures.persistence.purger_factory.eloquent"
                 alias="fidry_alice_data_fixtures.persistence.eloquent.purger.purger_factory"
                 public="true" />

        <service id="fidry_alice_data_fixtures.persistence.eloquent.purger.purger_factory"
                 class="Fidry\AliceDataFixtures\Bridge\Eloquent\Purger\ModelPurger"
                 lazy="true">
            <argument type="service" id="wouterj_eloquent.migrations.repository" />
            <argument type="string">%fidry_alice_data_fixtures.eloquent.migration_path%</argument>
            <argument type="service" id="wouterj_eloquent.migrator" />
        </service>

        <service id="fidry_alice_data_fixtures.persistence.purger.eloquent.model_purger"
                 alias="fidry_alice_data_fixtures.persistence.eloquent.purger.purger_factory">
            <!-- Deprecated (see DeprecateServicesPass) -->
        </service>

        <service id="fidry_alice_data_fixtures.persistence.purger_mode"
                 class="Fidry\AliceDataFixtures\Persistence\PurgeMode"
                 public="false">
            <factory class="Fidry\AliceDataFixtures\Persistence\PurgeMode" method="createDeleteMode" />

            <!-- Deprecated (see DeprecateServicesPass) -->
        </service>


        <!-- Persisters -->

        <service id="fidry_alice_data_fixtures.persistence.persister.eloquent"
                 alias="fidry_alice_data_fixtures.persistence.persister.eloquent.model_persister"
                 public="true" />

        <service id="fidry_alice_data_fixtures.persistence.persister.eloquent.model_persister"
                 class="Fidry\AliceDataFixtures\Bridge\Eloquent\Persister\ModelPersister"
                 lazy="true">
            <argument type="service" id="wouterj_eloquent.database_manager" />
        </service>

    </services>

</container>
