Skip to content

Commit

Permalink
tmarois#42 Sort by update or create time
Browse files Browse the repository at this point in the history
  • Loading branch information
Jansen Price committed Feb 8, 2019
1 parent 433190a commit fbe4e8d
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 0 deletions.
10 changes: 10 additions & 0 deletions src/Document.php
Original file line number Diff line number Diff line change
Expand Up @@ -434,6 +434,16 @@ public function field($field)
return $context;
}

if ($field == '__created_at')
{
return $this->__created_at;
}

if ($field == '__updated_at')
{
return $this->__updated_at;
}

foreach($parts as $part)
{
if (trim($part) == '')
Expand Down
20 changes: 20 additions & 0 deletions tests/DocumentTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -518,6 +518,26 @@ public function testFieldMethod()
$db->flush(true);
}

public function testFieldTimestamps()
{
$db = new \Filebase\Database([
'dir' => __DIR__.'/databases'
]);

$db->flush(true);

$db->get('vegetables')->set(['broccoli'=>'27'])->save();

$expected = time();
$actual = $db->get('vegetables')->field('__created_at');
$this->assertEquals($expected, $actual);

$actual = $db->get('vegetables')->field('__updated_at');
$this->assertEquals($expected, $actual);

$db->flush(true);
}


public function testNestedFieldMethod()
{
Expand Down
50 changes: 50 additions & 0 deletions tests/QueryTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -1045,4 +1045,54 @@ public function testQueryFromCacheAfterSave()
$db->flush(true);
}

public function testSortByTimes()
{
$db = new \Filebase\Database([
'dir' => __DIR__.'/databases/_testsort'
]);

$db->flush(true);

// Create some docs with time in between to get different timestamps
$doc = $db->get('record1')->set(['name'=>'a'])->save();
sleep(1);
$doc = $db->get('record2')->set(['name'=>'b'])->save();
sleep(1);
$doc = $db->get('record3')->set(['name'=>'c'])->save();

$documents = $db->query()->orderBy('__created_at', 'DESC')->results();
$expected = [
['name' => 'c'],
['name' => 'b'],
['name' => 'a'],
];
$this->assertEquals($expected, $documents);

$documents = $db->query()->orderBy('__created_at', 'ASC')->results();
$expected = [
['name' => 'a'],
['name' => 'b'],
['name' => 'c'],
];
$this->assertEquals($expected, $documents);

$documents = $db->query()->orderBy('__updated_at', 'DESC')->results();
$expected = [
['name' => 'c'],
['name' => 'b'],
['name' => 'a'],
];
$this->assertEquals($expected, $documents);

$documents = $db->query()->orderBy('__updated_at', 'ASC')->results();
$expected = [
['name' => 'a'],
['name' => 'b'],
['name' => 'c'],
];
$this->assertEquals($expected, $documents);

$db->flush(true);
}

}

0 comments on commit fbe4e8d

Please sign in to comment.