<?xml version="1.0"?>
<!--
/**
 * Copyright © Klarna Bank AB (publ)
 *
 * For the full copyright and license information, please view the NOTICE
 * and LICENSE files that were distributed with this source code.
 */
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="Magento\Framework\View\Element\UiComponent\DataProvider\CollectionFactory">
        <arguments>
            <argument name="collections" xsi:type="array">
                <item name="log_listing_data_source" xsi:type="string">
                    Klarna\Logger\Model\ResourceModel\Log\Grid\Collection
                </item>
            </argument>
        </arguments>
    </type>

    <virtualType name="Klarna\Logger\Model\ResourceModel\Log\Grid\Collection" type="Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult">
        <arguments>
            <argument name="mainTable" xsi:type="string">klarna_logs</argument>
            <argument name="resourceModel" xsi:type="string">
                Klarna\Logger\Model\ResourceModel\Log
            </argument>
        </arguments>
    </virtualType>

    <virtualType name="LogsGridFilterPool" type="Magento\Framework\View\Element\UiComponent\DataProvider\FilterPool">
        <arguments>
            <argument name="appliers" xsi:type="array">
                <item name="regular" xsi:type="object">
                    Magento\Framework\View\Element\UiComponent\DataProvider\RegularFilter
                </item>
                <item name="fulltext" xsi:type="object">
                    Magento\Framework\View\Element\UiComponent\DataProvider\FulltextFilter
                </item>
            </argument>
        </arguments>
    </virtualType>

    <virtualType name="LogsGridDataProvider" type="Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider">
        <arguments>
            <argument name="collection" xsi:type="object" shared="false">
                Klarna\Logger\Model\ResourceModel\Log\Collection
            </argument>
            <argument name="filterPool" xsi:type="object" shared="false">
                LogsGridFilterPool
            </argument>
        </arguments>
    </virtualType>

    <type name="Klarna\Logger\Model\Handlers\File">
        <arguments>
            <argument name="filesystem" xsi:type="object">Magento\Framework\Filesystem\Driver\File</argument>
            <argument name="fileName" xsi:type="string">/var/log/klarna.log</argument>
        </arguments>
    </type>

    <type name="Klarna\Logger\Model\Logger">
        <arguments>
            <argument name="handlers"  xsi:type="array">
                <item name="system" xsi:type="object">Klarna\Logger\Model\Handlers\File</item>
            </argument>
        </arguments>
    </type>

    <preference for="Klarna\Logger\Api\LogRepositoryInterface" type="Klarna\Logger\Model\LogRepository"/>
    <preference for="Klarna\Logger\Api\Data\LogInterface" type="Klarna\Logger\Model\Log"/>
    <preference for="Klarna\Logger\Api\LoggerInterface" type="Klarna\Logger\Model\Logger" />
</config>