<?php

namespace Rinsvent\Data2DTODoctrineDocumentBundle\Service;

use Doctrine\ODM\MongoDB\DocumentManager;
use Rinsvent\Transformer\Transformer\Meta;
use Rinsvent\TransformerBundle\Service\AbstractTransformer;

class DocumentTransformer extends AbstractTransformer
{
    public function __construct(
        protected DocumentManager $dm
    ) {
    }

    /**
     * @param $data
     * @param Document $meta
     */
    public function transform(mixed $data, Meta $meta): mixed
    {
        $repository = $this->dm->getRepository($meta->class);
        try {
            return $repository->find($data);
        } catch (\Throwable) {
            return $data;
        }
    }
}