From e655699917a473c464215798d3316741c4fd2bcd Mon Sep 17 00:00:00 2001 From: "Alexander A. Klimov" Date: Thu, 3 Nov 2016 14:35:18 +0100 Subject: [PATCH] Repository: add support for per-table datasources refs #13034 --- library/Icinga/Repository/Repository.php | 6 ++++-- library/Icinga/Repository/RepositoryQuery.php | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/library/Icinga/Repository/Repository.php b/library/Icinga/Repository/Repository.php index 379614f22..5e2b61b14 100644 --- a/library/Icinga/Repository/Repository.php +++ b/library/Icinga/Repository/Repository.php @@ -263,11 +263,13 @@ abstract class Repository implements Selectable } /** - * Return the datasource being used + * Return the datasource being used for the table $table + * + * @param string $table * * @return Selectable */ - public function getDataSource() + public function getDataSource($table = null) { return $this->ds; } diff --git a/library/Icinga/Repository/RepositoryQuery.php b/library/Icinga/Repository/RepositoryQuery.php index 586403873..4f42fa7c2 100644 --- a/library/Icinga/Repository/RepositoryQuery.php +++ b/library/Icinga/Repository/RepositoryQuery.php @@ -109,7 +109,7 @@ class RepositoryQuery implements QueryInterface, SortRules, FilterColumns, Itera */ public function from($target, array $columns = null) { - $this->query = $this->repository->getDataSource()->select(); + $this->query = $this->repository->getDataSource($target)->select(); $this->query->from($this->repository->requireTable($target, $this)); $this->query->columns($this->prepareQueryColumns($target, $columns)); $this->target = $target; @@ -716,7 +716,7 @@ class RepositoryQuery implements QueryInterface, SortRules, FilterColumns, Itera if ($this->query instanceof Traversable) { $iterator = $this->query; } else { - $iterator = $this->repository->getDataSource()->query($this->query); + $iterator = $this->repository->getDataSource($this->target)->query($this->query); } if ($iterator instanceof IteratorAggregate) {