szurubooru/src/Dao/AbstractDao.php

77 lines
1.7 KiB
PHP
Raw Normal View History

<?php
namespace Szurubooru\Dao;
abstract class AbstractDao implements ICrudDao
{
protected $db;
protected $collection;
protected $entityName;
2014-08-30 17:10:45 +02:00
protected $entityConverter;
2014-08-30 17:10:45 +02:00
public function __construct(
\Szurubooru\DatabaseConnection $databaseConnection,
$collectionName,
$entityName)
{
2014-08-30 17:10:45 +02:00
$this->entityConverter = new EntityConverter($entityName);
$this->db = $databaseConnection->getDatabase();
$this->collection = $this->db->selectCollection($collectionName);
$this->entityName = $entityName;
}
public function getCollection()
{
return $this->collection;
}
public function getEntityConverter()
{
return $this->entityConverter;
}
public function save(&$entity)
{
2014-08-30 17:10:45 +02:00
$arrayEntity = $this->entityConverter->toArray($entity);
if ($entity->getId())
{
2014-09-10 19:16:06 +02:00
$savedId = $arrayEntity['_id'];
unset($arrayEntity['_id']);
$this->collection->update(['_id' => new \MongoId($entity->getId())], $arrayEntity, ['w' => true]);
2014-09-10 19:16:06 +02:00
$arrayEntity['_id'] = $savedId;
}
else
{
2014-08-31 16:55:49 +02:00
$this->collection->insert($arrayEntity, ['w' => true]);
}
2014-08-30 17:10:45 +02:00
$entity = $this->entityConverter->toEntity($arrayEntity);
return $entity;
}
public function findAll()
{
$entities = [];
foreach ($this->collection->find() as $key => $arrayEntity)
{
2014-08-30 17:10:45 +02:00
$entity = $this->entityConverter->toEntity($arrayEntity);
$entities[$key] = $entity;
}
return $entities;
}
public function findById($entityId)
{
$arrayEntity = $this->collection->findOne(['_id' => new \MongoId($entityId)]);
2014-08-30 17:10:45 +02:00
return $this->entityConverter->toEntity($arrayEntity);
}
public function deleteAll()
{
$this->collection->remove();
}
public function deleteById($entityId)
{
$this->collection->remove(['_id' => new \MongoId($entityId)]);
}
}