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); }
public function testItReturnsEmptyFilters() { $filter = new Filter(); $filter->must()->equal('id', 1); $filter->clear(); $expected = ['must' => [], 'must_not' => [], 'should' => []]; $this->assertEquals($expected, $filter->filters()); }
/** * 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(); }
/** * 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(); }
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;
<?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); }
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; }