2017 © Pedro Peláez
 

library saxulum-model-importer

Saxulum Model Importer

image

saxulum/saxulum-model-importer

Saxulum Model Importer

  • Friday, April 20, 2018
  • by dominikzogg
  • Repository
  • 1 Watchers
  • 0 Stars
  • 85 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 6 Versions
  • 0 % Grown

The README.md

saxulum-model-importer

Build Status Total Downloads Latest Stable Version Scrutinizer Code Quality, (*1)

Description

A simple to use model importer, as a user you do not need to check if a create or update is needed, to loop..., (*2)

Requirements

  • php: ~5.5|~7.0
  • psr/log: ~1.0

Installation

Through Composer as [saxulum/saxulum-model-importer][1]., (*3)

Usage

Sample Implementation using Doctrine 2 ORM

```{.php} $em = ..., (*4)

$importer = new Importer(new Reader($em), new Writer($em)); $importer->import();, (*5)


```{.php} class Reader implements ReaderInterface { /** * @var EntityManager */ protected $em; /** * @param EntityManager $em */ public function __construct(EntityManager $em) { $this->em = $em; } /** * @ReaderModelInterface[]|array */ public function getReaderModels($offset, $limit) { $qb = $this->em->getRepository(ReaderEntity::class)->createQueryBuilder('r'); $qb->setFirstResult($offset); $qb->setMaxResults($limit); return $qb->getQuery()->getResult(); } public function clearReaderModels() { $this->em->clear(ReaderEntity::class); } }

```{.php} class ReaderEntity implements ReaderModelInterface { /** * @var int */ protected $id;, (*6)

/**
 * @var string
 */
protected $name;

/**
 * @return int
 */
public function getId()
{
    return $this->id;
}

/**
 * @param string $name
 * @return $this
 */
public function setName($name)
{
    $this->name = $name;

    return $this;
}

/**
 * @return string
 */
public function getName()
{
    return $this->name;
}

/**
 * @return int
 */
public function getImportIdentifier()
{
    return $this->getId();
}

}, (*7)


```{.php} class Writer implements WriterInterface { /** * @var EntityManager */ protected $em; /** * @param EntityManager $em */ public function __construct(EntityManager $em) { $this->em = $em; } /** * @param ReaderModelInterface $readerModel * * @return WriterModelInterface|null */ public function findWriterModel(ReaderModelInterface $readerModel) { return $this->em->getRepository(WriterEntity::class) ->findOneBy(['importIdentifier' => $readerModel->getImportIdentifier()]); } /** * @param ReaderModelInterface $readerModel * * @return WriterModelInterface * * @throws NotImportableException */ public function createWriterModel(ReaderModelInterface $readerModel) { $writerModel = new WriterEntity(); $writerModel->setName($readerModel->getName()); return $writerModel; } /** * @param WriterModelInterface $writerModel * @param ReaderModelInterface $readerModel * * @throws NotImportableException */ public function updateWriterModel(WriterModelInterface $writerModel, ReaderModelInterface $readerModel) { $writerModel->setName($readerModel->getName()); } /** * @param WriterModelInterface $writerModel * * @throws NotImportableException */ public function persistWriterModel(WriterModelInterface $writerModel) { $this->em->persist($writerModel); } public function flushWriterModels(array $writeModels) { $this->em->flush($writeModels); } public function clearWriterModels() { $this->em->clear(WriterEntity::class); } /** * @param \DateTime $lastImportDate */ public function removeWriterModels(\DateTime $lastImportDate) { $qb = $this->em->createQueryBuilder(); $qb->delete(WriterEntity::class, 'w'); $qb->where( $qb->expr()->orX( $qb->expr()->isNull('w.lastImportDate'), $qb->expr()->neq('w.lastImportDate', ':lastImportDate') ) ); $qb->setParameter('lastImportDate', $lastImportDate); $qb->getQuery()->execute(); } }

```{.php} class WriterEntity implements WriterModelInterface { /** * @var int */ protected $id;, (*8)

/**
 * @var string
 */
protected $name;

/**
 * @var int
 */
protected $importIdentifier;

/**
 * @var \DateTime
 */
protected $lastImportDate;

/**
 * @return int
 */
public function getId()
{
    return $this->id;
}

/**
 * @param string $name
 * @return $this
 */
public function setName($name)
{
    $this->name = $name;

    return $this;
}

/**
 * @return string
 */
public function getName()
{
    return $this->name;
}

/**
 * @param int $importIdentifier
 */
public function setImportIdentifier($importIdentifier)
{
    $this->importIdentifier = $importIdentifier;
}

/**
 * @return int
 */
public function getImportIdentifier()
{
    return $this->importIdentifier;
}

/**
 * @param \DateTime $lastImportDate
 */
public function setLastImportDate(\DateTime $lastImportDate)
{
    $this->lastImportDate = $lastImportDate;
}

/**
 * @return \DateTime
 */
public function getLastImportDate()
{
    return $this->lastImportDate;
}

} ```, (*9)

Dominik Zogg dominik.zogg@gmail.com, (*10)

The Versions

20/04 2018

dev-master

9999999-dev

Saxulum Model Importer

  Sources   Download

MIT

The Requires

 

The Development Requires

by Dominik Zogg

model importer saxulum

17/07 2016

2.1.0

2.1.0.0

Saxulum Model Importer

  Sources   Download

MIT

The Requires

 

The Development Requires

by Dominik Zogg

model importer saxulum

14/07 2016

2.0.0

2.0.0.0

Saxulum Model Importer

  Sources   Download

MIT

The Requires

 

The Development Requires

by Dominik Zogg

model importer saxulum

12/07 2016

v1.x-dev

1.9999999.9999999.9999999-dev

Saxulum Model Importer

  Sources   Download

MIT

The Requires

 

The Development Requires

by Dominik Zogg

model importer saxulum

12/07 2016

1.0.1

1.0.1.0

Saxulum Model Importer

  Sources   Download

MIT

The Requires

 

The Development Requires

by Dominik Zogg

model importer saxulum

11/07 2016

1.0.0

1.0.0.0

Saxulum Model Importer

  Sources   Download

MIT

The Requires

 

The Development Requires

by Dominik Zogg

model importer saxulum