<?xml version="1.0" ?>

<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">

    <services>
        <service id="SwagMigrationAssistant\Migration\Writer\WriterRegistry"
                 class="SwagMigrationAssistant\Migration\Writer\WriterRegistry">
            <argument type="tagged_iterator" tag="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\AbstractWriter" abstract="true"/>

        <service id="SwagMigrationAssistant\Migration\Writer\ProductWriter"
                 parent="SwagMigrationAssistant\Migration\Writer\AbstractWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\Content\Product\ProductDefinition"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\TranslationWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\DefinitionInstanceRegistry"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\CategoryWriter"
                 parent="SwagMigrationAssistant\Migration\Writer\AbstractWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\Content\Category\CategoryDefinition"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\MediaFolderWriter"
                 parent="SwagMigrationAssistant\Migration\Writer\AbstractWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\Content\Media\Aggregate\MediaFolder\MediaFolderDefinition"/>
            <argument type="service" id="media_folder.repository"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\MediaWriter"
                 parent="SwagMigrationAssistant\Migration\Writer\AbstractWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\Content\Media\MediaDefinition"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\NumberRangeWriter"
                 parent="SwagMigrationAssistant\Migration\Writer\AbstractWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\System\NumberRange\NumberRangeDefinition"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\LanguageWriter"
                 parent="SwagMigrationAssistant\Migration\Writer\AbstractWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\System\Language\LanguageDefinition"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\CustomerAttributeWriter"
                 parent="SwagMigrationAssistant\Migration\Writer\AbstractWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\System\CustomField\Aggregate\CustomFieldSet\CustomFieldSetDefinition"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\CustomerWriter"
                 parent="SwagMigrationAssistant\Migration\Writer\AbstractWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\Checkout\Customer\CustomerDefinition"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\OrderAttributeWriter"
                 parent="SwagMigrationAssistant\Migration\Writer\AbstractWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\System\CustomField\Aggregate\CustomFieldSet\CustomFieldSetDefinition"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\OrderWriter"
                 parent="SwagMigrationAssistant\Migration\Writer\AbstractWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\Checkout\Order\OrderDefinition"/>
            <argument type="service" id="Shopware\Core\Framework\Struct\Serializer\StructNormalizer"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\OrderDocumentAttributeWriter"
                 parent="SwagMigrationAssistant\Migration\Writer\AbstractWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\System\CustomField\Aggregate\CustomFieldSet\CustomFieldSetDefinition"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\OrderDocumentWriter"
                 parent="SwagMigrationAssistant\Migration\Writer\AbstractWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\Checkout\Document\DocumentDefinition"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\CustomerGroupAttributeWriter"
                 parent="SwagMigrationAssistant\Migration\Writer\AbstractWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\System\CustomField\Aggregate\CustomFieldSet\CustomFieldSetDefinition"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\CustomerGroupWriter"
                 parent="SwagMigrationAssistant\Migration\Writer\AbstractWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\Checkout\Customer\Aggregate\CustomerGroup\CustomerGroupDefinition"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\CustomerWishlistWriter"
                 parent="SwagMigrationAssistant\Migration\Writer\AbstractWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\Checkout\Customer\Aggregate\CustomerWishlist\CustomerWishlistDefinition"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\ManufacturerAttributeWriter"
                 parent="SwagMigrationAssistant\Migration\Writer\AbstractWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\System\CustomField\Aggregate\CustomFieldSet\CustomFieldSetDefinition"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\ProductAttributeWriter"
                 parent="SwagMigrationAssistant\Migration\Writer\AbstractWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\System\CustomField\Aggregate\CustomFieldSet\CustomFieldSetDefinition"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\ProductPriceAttributeWriter"
                 parent="SwagMigrationAssistant\Migration\Writer\AbstractWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\System\CustomField\Aggregate\CustomFieldSet\CustomFieldSetDefinition"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\CategoryAttributeWriter"
                 parent="SwagMigrationAssistant\Migration\Writer\AbstractWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\System\CustomField\Aggregate\CustomFieldSet\CustomFieldSetDefinition"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\PropertyGroupOptionWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\Content\Property\Aggregate\PropertyGroupOption\PropertyGroupOptionDefinition"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\CurrencyWriter"
                 parent="SwagMigrationAssistant\Migration\Writer\AbstractWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\System\Currency\CurrencyDefinition"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\SalesChannelWriter"
                 parent="SwagMigrationAssistant\Migration\Writer\AbstractWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\System\SalesChannel\SalesChannelDefinition"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\NewsletterRecipientWriter"
                 parent="SwagMigrationAssistant\Migration\Writer\AbstractWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\Content\Newsletter\Aggregate\NewsletterRecipient\NewsletterRecipientDefinition"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\ShippingMethodWriter"
                 parent="SwagMigrationAssistant\Migration\Writer\AbstractWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\Checkout\Shipping\ShippingMethodDefinition"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\ProductReviewWriter"
                 parent="SwagMigrationAssistant\Migration\Writer\AbstractWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\Content\Product\Aggregate\ProductReview\ProductReviewDefinition"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\SeoUrlWriter"
                 parent="SwagMigrationAssistant\Migration\Writer\AbstractWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\Content\Seo\SeoUrl\SeoUrlDefinition"/>
            <argument type="service" id="sales_channel.repository"/>
            <argument type="service" id="Shopware\Core\Content\Seo\SeoUrlPersister"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\CrossSellingWriter"
                 parent="SwagMigrationAssistant\Migration\Writer\AbstractWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\Content\Product\Aggregate\ProductCrossSelling\ProductCrossSellingDefinition"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\MainVariantRelationWriter"
                 parent="SwagMigrationAssistant\Migration\Writer\AbstractWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\Content\Product\ProductDefinition"/>
            <tag name="shopware.migration.writer"/>
        </service>

        <service id="SwagMigrationAssistant\Migration\Writer\CountryWriter"
                 parent="SwagMigrationAssistant\Migration\Writer\AbstractWriter">
            <argument type="service" id="Shopware\Core\Framework\DataAbstractionLayer\Write\EntityWriter"/>
            <argument type="service" id="Shopware\Core\System\Country\CountryDefinition"/>
            <tag name="shopware.migration.writer"/>
        </service>
    </services>
</container>
