public function testItHitsCacheWhenFindBy()
 {
     $filter = new Filter();
     $filter->must()->equal('name', 'Ken Sugimori');
     $customer1a = $this->repository->findBy($filter);
     $customer1b = $this->repository->findBy($filter);
     $this->assertEquals($customer1a, $customer1b);
 }
Exemplo n.º 2
0
 public function testItReturnsEmptyFilters()
 {
     $filter = new Filter();
     $filter->must()->equal('id', 1);
     $filter->clear();
     $expected = ['must' => [], 'must_not' => [], 'should' => []];
     $this->assertEquals($expected, $filter->filters());
 }
Exemplo n.º 3
0
 /**
  * Pageable constructor.
  *
  * @param                      $pageNumber
  * @param                      $pageSize
  * @param SortInterface|null   $sort
  * @param FilterInterface|null $filter
  * @param FieldsInterface|null $fields
  * @param FieldsInterface|null $distinctFields
  */
 public function __construct($pageNumber, $pageSize, SortInterface $sort = null, FilterInterface $filter = null, FieldsInterface $fields = null, FieldsInterface $distinctFields = null)
 {
     $this->pageNumber = (int) $pageNumber;
     $this->pageSize = (int) $pageSize;
     $this->sort = $sort ? $sort : Sort::null();
     $this->filter = $filter ? $filter : Filter::null();
     $this->fields = $fields ? $fields : Fields::null();
     $this->distinctFields = $distinctFields ? $distinctFields : Fields::null();
 }
Exemplo n.º 4
0
 /**
  * Page constructor.
  *
  * @param array           $elements
  * @param                 $totalElements
  * @param                 $pageNumber
  * @param                 $totalPages
  * @param SortInterface   $sort
  * @param FilterInterface $filter
  * @param FieldsInterface $fields
  */
 public function __construct(array $elements, $totalElements, $pageNumber, $totalPages, SortInterface $sort = null, FilterInterface $filter = null, FieldsInterface $fields = null)
 {
     $this->elements = ImmutableTypedCollection::fromArray(array_values($elements));
     $this->totalElements = (int) $totalElements;
     $this->pageNumber = (int) $pageNumber;
     $this->totalPages = (int) $totalPages;
     $this->sort = $sort ? $sort : Sort::null();
     $this->filter = $filter ? $filter : Filter::null();
     $this->fields = $fields ? $fields : Fields::null();
 }
Exemplo n.º 5
0
use NilPortugues\Example\AutoGeneratedId\User;
use NilPortugues\Example\AutoGeneratedId\UserId;
use NilPortugues\Example\AutoGeneratedId\UserMapping;
use NilPortugues\Example\AutoGeneratedId\UserRepository;
use NilPortugues\Foundation\Domain\Model\Repository\Filter;
use NilPortugues\Foundation\Domain\Model\Repository\Order;
use NilPortugues\Foundation\Domain\Model\Repository\Sort;
include_once __DIR__ . '/../../vendor/autoload.php';
$pdo = new PDO('sqlite::memory:');
$pdo->exec('
CREATE TABLE users (
  user_id INTEGER PRIMARY KEY AUTOINCREMENT,  
  username CHAR(255),
  public_username CHAR(255),
  email CHAR(255),
  created_at DATETIME
);');
$mapping = new UserMapping();
$repository = new UserRepository($pdo, $mapping);
$user = new User(null, 'nilportugues', 'Nil', '*****@*****.**', new DateTime('2016-01-11'));
$user = $repository->add($user);
$userId = new UserId($user->id());
print_r($repository->find($userId));
echo PHP_EOL;
$filter = new Filter();
$filter->must()->beGreaterThanOrEqual('registeredOn.date', '2016-01-01 00:00:00');
$filter->must()->beLessThan('registeredOn.date', '2016-02-01 00:00:00');
$sort = new Sort();
$sort->setOrderFor('registeredOn.date', new Order('ASC'));
print_r($repository->findBy($filter, $sort));
echo PHP_EOL;
Exemplo n.º 6
0
<?php

include __DIR__ . '/../vendor/autoload.php';
use NilPortugues\Example\Repository\Color;
use NilPortugues\Example\Repository\ColorRepository;
use NilPortugues\Foundation\Domain\Model\Repository\Filter;
$colors = [new Color('red', 1), new Color('green', 2), new Color('yellow', 3), new Color('blue', 4), new Color('cyan', 5), new Color('pink', 6), new Color('purple', 7), new Color('orange', 8), new Color('white', 9), new Color('black', 10)];
$repository = new ColorRepository($colors);
echo '<h2>Print all colors</h2>';
echo '<pre>';
print_r($repository->findAll()->content());
echo '</pre>';
echo '<h2>Print all names containing R</h2>';
$filter = new Filter();
$filter->must()->contain('name', 'R');
$colorsContaining = $repository->findBy($filter);
echo '<pre>';
print_r($colorsContaining);
echo '</pre>';
echo '<h2>Print all colours with id between 2 and 6</h2>';
$filter = new Filter();
$filter->must()->range('id', 2, 6);
$idRanges = $repository->findBy($filter);
echo '<pre>';
print_r($idRanges);
echo '</pre>';
 public function testFindBy()
 {
     $sort = new Sort(['name'], new Order('ASC'));
     $filter = new Filter();
     $filter->must()->contain('name', 'Ken');
     $expected = new Clients();
     $expected->id = 4;
     $expected->name = 'Ken Sugimori';
     $expected->date = (new DateTime('2010-12-10'))->format('Y-m-d H:i:s');
     $expected->totalOrders = 4;
     $expected->totalEarnings = 69158.68700000001;
     $result = $this->repository->findBy($filter, $sort);
     $this->assertNotEmpty($result);
     $this->assertEquals(1, count($result));
 }
 public function testFindByShouldNotEqualTest()
 {
     $filter = new Filter();
     $filter->must()->contain('name', 'John Doe');
     $filter->should()->notEqual('name', 'Shigeru Miyamoto');
     $results = $this->repository->findBy($filter);
     $this->assertEquals(3, count($results));
 }
        $table->string('name', 255);
        $table->integer('id');
        $table->primary('id');
        $table->timestamps();
    });
    $model = new UserModel();
    $model->name = 'Admin User';
    $model->save();
    for ($i = 2; $i <= 20; ++$i) {
        $model = new UserModel();
        $model->name = 'Dummy User ' . $i;
        $model->created_at = (new DateTime())->setDate(2016, rand(1, 12), rand(1, 27));
        $model->save();
    }
}
//-------------------------------------------------------------------------------------------------------------
// - getUserAction
//-------------------------------------------------------------------------------------------------------------
$userAdapter = new UserAdapter();
$repository = new UserRepository($userAdapter);
$userId = new UserId(1);
print_r($repository->find($userId));
//-------------------------------------------------------------------------------------------------------------
// - getUsersRegisteredLastMonth
//-------------------------------------------------------------------------------------------------------------
$filter = new Filter();
$filter->must()->beGreaterThanOrEqual('created_at', '2016-01-01');
$filter->must()->beLessThan('created_at', '2016-02-01');
$sort = new Sort();
$sort->setOrderFor('created_at', new Order('ASC'));
print_r($repository->findBy($filter, $sort));
 /**
  * Adds a collections of entities to the storage.
  *
  * @param array $values
  *
  * @return mixed
  */
 public function addAll(array $values)
 {
     if (empty($values)) {
         return [];
     }
     $ids = $this->fetchIds($values);
     $alreadyExistingRows = $this->fetchExistingRows($ids);
     $updates = [];
     $inserts = [];
     /** @var Identity $value */
     foreach ($values as $value) {
         if (false !== array_key_exists((string) $value->id(), $alreadyExistingRows)) {
             $updates[] = $value;
         } else {
             $inserts[] = $value;
         }
     }
     foreach ($updates as $update) {
         $this->updateQuery($update);
     }
     foreach ($inserts as $insert) {
         $this->insertQuery($insert);
     }
     $mapping = array_flip($this->mapping->map());
     $this->guardMappedIdentity($mapping);
     $filter = new DomainFilter();
     $filter->must()->includeGroup($mapping[$this->mapping->identity()], $ids);
     return $this->findByHelper($filter);
 }
Exemplo n.º 11
0
 public function testItShouldBeEmpty()
 {
     $filter = new Filter();
     $filter->should()->empty('name');
     $results = InMemoryFilter::filter($this->data, $filter);
     $this->assertEquals(4, count($results));
 }
 public function testFindBy()
 {
     $sort = new Sort(['name'], new Order('ASC'));
     $filter = new Filter();
     $filter->must()->contain('name', 'Ken');
     $result = $this->repository->findBy($filter, $sort);
     $this->assertNotEmpty($result);
     $this->assertEquals(1, count($result));
 }
 /**
  * Returns whether an entity with the given id exists.
  *
  * @param $id
  *
  * @return bool
  */
 public function exists(Identity $id)
 {
     $model = self::$instance;
     $filter = new DomainFilter();
     $filter->must()->equal($model->getKeyName(), $id->id());
     return $this->count($filter) > 0;
 }