Query Cache

Added several static entities to L2 doctrine
cache ( summit_types, event_types, presentation_categories)
also improved some queries.

Change-Id: Ic7d6ddcb9f2f7d9497fc3c0a0e653b94d721b736
This commit is contained in:
Sebastian Marcet
2016-11-17 10:34:01 -03:00
parent 362e897511
commit 665d690530
9 changed files with 28 additions and 13 deletions

View File

@@ -136,6 +136,7 @@ abstract class AbstractSerializer implements IModelSerializer
$new_values = array();
foreach ($mappings as $attribute => $mapping) {
$mapping = preg_split('/:/',$mapping);
if(!in_array($mapping[0], $fields)) continue;
$value = call_user_func( array( $this->object, 'get'.$attribute ) );
if(count($mapping) > 1)
{
@@ -175,13 +176,7 @@ abstract class AbstractSerializer implements IModelSerializer
}
$values = $new_values;
}
//check requested fields
if(count($fields) > 0) {
foreach ($values as $field => $value) {
if (in_array($field, $fields)) continue;
unset($values[$field]);
}
}
return $values;
}
}

View File

@@ -260,7 +260,7 @@ class Presentation extends SummitEvent
}
/**
* @ORM\ManyToOne(targetEntity="PresentationCategory")
* @ORM\ManyToOne(targetEntity="PresentationCategory", fetch="EXTRA_LAZY")
* @ORM\JoinColumn(name="CategoryID", referencedColumnName="ID")
* @var PresentationCategory
*/

View File

@@ -20,6 +20,7 @@ use Doctrine\Common\Collections\ArrayCollection;
* Class PresentationCategory
* @ORM\Entity
* @ORM\Table(name="PresentationCategory")
* @ORM\Cache(usage="NONSTRICT_READ_WRITE", region="summit_presentation_category_region")
* @package models\summit
*/
class PresentationCategory extends SilverstripeBaseModel

View File

@@ -417,7 +417,7 @@ class SummitEvent extends SilverstripeBaseModel
}
/**
* @ORM\ManyToOne(targetEntity="SummitEventType")
* @ORM\ManyToOne(targetEntity="SummitEventType", fetch="EXTRA_LAZY")
* @ORM\JoinColumn(name="TypeID", referencedColumnName="ID")
* @var SummitEventType
*/
@@ -441,7 +441,7 @@ class SummitEvent extends SilverstripeBaseModel
}
/**
* @ORM\ManyToOne(targetEntity="SummitAbstractLocation")
* @ORM\ManyToOne(targetEntity="SummitAbstractLocation", fetch="EXTRA_LAZY")
* @ORM\JoinColumn(name="LocationID", referencedColumnName="ID")
*/
private $location = null;
@@ -485,7 +485,7 @@ class SummitEvent extends SilverstripeBaseModel
}
/**
* @ORM\ManyToMany(targetEntity="models\summit\SummitType")
* @ORM\ManyToMany(targetEntity="models\summit\SummitType", fetch="EXTRA_LAZY")
* @ORM\JoinTable(name="SummitEvent_AllowedSummitTypes",
* joinColumns={@ORM\JoinColumn(name="SummitEventID", referencedColumnName="ID")},
* inverseJoinColumns={@ORM\JoinColumn(name="SummitTypeID", referencedColumnName="ID")}
@@ -514,7 +514,7 @@ class SummitEvent extends SilverstripeBaseModel
}
/**
* @ORM\ManyToMany(targetEntity="models\main\Company", inversedBy="sponsorships")
* @ORM\ManyToMany(targetEntity="models\main\Company", inversedBy="sponsorships", fetch="EXTRA_LAZY")
* @ORM\JoinTable(name="SummitEvent_Sponsors",
* joinColumns={@ORM\JoinColumn(name="SummitEventID", referencedColumnName="ID")},
* inverseJoinColumns={@ORM\JoinColumn(name="CompanyID", referencedColumnName="ID")}

View File

@@ -18,6 +18,7 @@ use Doctrine\ORM\Mapping AS ORM;
/**
* @ORM\Entity
* @ORM\Table(name="SummitEventType")
* @ORM\Cache(usage="NONSTRICT_READ_WRITE", region="summit_event_type_region")
* Class SummitEventType
* @package models\summit
*/

View File

@@ -19,6 +19,7 @@ use Doctrine\Common\Collections\ArrayCollection;
/**
* @ORM\Entity
* @ORM\Table(name="SummitTicketType")
* @ORM\Cache(usage="NONSTRICT_READ_WRITE", region="summit_ticket_type_region")
* Class SummitTicketType
* @package models\summit
*/

View File

@@ -18,6 +18,7 @@ use Doctrine\ORM\Mapping AS ORM;
/**
* @ORM\Entity
* @ORM\Table(name="SummitType")
* @ORM\Cache(usage="NONSTRICT_READ_WRITE", region="summit_type_region")
* Class SummitType
* @package models\summit
*/

View File

@@ -230,6 +230,22 @@ return [
'lifetime' => 3600,
'lock_lifetime' => 60
],
'summit_type_region' => [
'lifetime' => 1800,
'lock_lifetime' => 60
],
'summit_ticket_type_region' => [
'lifetime' => 1800,
'lock_lifetime' => 60
],
'summit_event_type_region' => [
'lifetime' => 1800,
'lock_lifetime' => 60
],
'summit_presentation_category_region' => [
'lifetime' => 1800,
'lock_lifetime' => 60
],
],
'log_enabled' => true,
'file_lock_region_directory' => '/tmp'

View File

@@ -722,7 +722,7 @@ final class OAuth2SummitApiTest extends ProtectedApiTest
$params = array
(
'id' => 7,
'event_id' => 15987,
'event_id' => 17300,
'fields' => 'id, avg_feedback_rate, head_count',
'relations' => 'metrics'
);