Replace raw SQL query by PicoDb

This commit is contained in:
Frederic Guillot 2016-01-17 08:12:44 -05:00
parent 27b9b7a727
commit 3c57626918
3 changed files with 6 additions and 22 deletions

View File

@ -169,14 +169,8 @@ class ProjectActivity extends Base
public function cleanup($max)
{
if ($this->db->table(self::TABLE)->count() > $max) {
$this->db->execute('
DELETE FROM '.self::TABLE.'
WHERE id <= (
SELECT id FROM (
SELECT id FROM '.self::TABLE.' ORDER BY id DESC LIMIT 1 OFFSET '.$max.'
) foo
)'
);
$subquery = $this->db->table(self::TABLE)->desc('id')->limit($max)->columns('id');
$this->db->table(self::TABLE)->notInSubquery('id', $subquery)->remove();
}
}

View File

@ -159,7 +159,7 @@ class ProjectDailyColumnStats extends Base
* @param string $day
* @param string $column_id
* @param string $field
* @return array
* @return integer
*/
private function findValueInMetrics(array &$metrics, $day, $column_id, $field)
{

View File

@ -87,9 +87,10 @@ class ProjectActivityTest extends Base
$max = 15;
$nb_events = 100;
$task = $tf->getbyId(1);
for ($i = 0; $i < $nb_events; $i++) {
$this->assertTrue($e->createEvent(1, 1, 1, Task::EVENT_CLOSE, array('task' => $tf->getbyId(1))));
$this->assertTrue($e->createEvent(1, 1, 1, Task::EVENT_CLOSE, array('task' => $task)));
}
$this->assertEquals($nb_events, $this->container['db']->table('project_activities')->count());
@ -98,20 +99,9 @@ class ProjectActivityTest extends Base
$events = $e->getProject(1);
$this->assertNotEmpty($events);
$this->assertTrue(is_array($events));
$this->assertEquals($max, count($events));
$this->assertCount($max, $events);
$this->assertEquals(100, $events[0]['id']);
$this->assertEquals(99, $events[1]['id']);
$this->assertEquals(86, $events[14]['id']);
// Cleanup during task creation
$nb_events = ProjectActivity::MAX_EVENTS + 10;
for ($i = 0; $i < $nb_events; $i++) {
$this->assertTrue($e->createEvent(1, 1, 1, Task::EVENT_CLOSE, array('task' => $tf->getbyId(1))));
}
$this->assertEquals(ProjectActivity::MAX_EVENTS, $this->container['db']->table('project_activities')->count());
}
}