| @@ 12-52 (lines=41) @@ | ||
| 9 | * |
|
| 10 | * @package Zortje\MySQLKeeper\Database\Table |
|
| 11 | */ |
|
| 12 | class ColumnCollection extends Collection { |
|
| 13 | ||
| 14 | /** |
|
| 15 | * @var Column[] Table columns |
|
| 16 | */ |
|
| 17 | protected $collection = []; |
|
| 18 | ||
| 19 | /** |
|
| 20 | * Add column to collection |
|
| 21 | * |
|
| 22 | * @param Column $column |
|
| 23 | * |
|
| 24 | * @throws \InvalidArgumentException if incorrect object type is added |
|
| 25 | */ |
|
| 26 | public function add($column) { |
|
| 27 | if (!is_object($column) || get_class($column) !== 'Zortje\MySQLKeeper\Database\Table\Column') { |
|
| 28 | $argumentType = is_object($column) ? get_class($column) : gettype($column); |
|
| 29 | ||
| 30 | throw new \InvalidArgumentException(sprintf('Collection may only contain "%s" objects, "%s" is not allowed', 'Zortje\MySQLKeeper\Database\Table\Column', $argumentType)); |
|
| 31 | } |
|
| 32 | ||
| 33 | $this->collection[] = $column; |
|
| 34 | } |
|
| 35 | ||
| 36 | /** |
|
| 37 | * Get column collection with primary key columns |
|
| 38 | * |
|
| 39 | * @return ColumnCollection |
|
| 40 | */ |
|
| 41 | public function isPrimaryKey() { |
|
| 42 | $columns = new ColumnCollection(); |
|
| 43 | ||
| 44 | foreach ($this->collection as $column) { |
|
| 45 | if ($column->isPrimaryKey() === true) { |
|
| 46 | $columns->add($column); |
|
| 47 | } |
|
| 48 | } |
|
| 49 | ||
| 50 | return $columns; |
|
| 51 | } |
|
| 52 | } |
|
| 53 | ||
| @@ 12-52 (lines=41) @@ | ||
| 9 | * |
|
| 10 | * @package Zortje\MySQLKeeper\Database\Table |
|
| 11 | */ |
|
| 12 | class IndexCollection extends Collection { |
|
| 13 | ||
| 14 | /** |
|
| 15 | * @var Index[] Table indices |
|
| 16 | */ |
|
| 17 | protected $collection = []; |
|
| 18 | ||
| 19 | /** |
|
| 20 | * Add index to collection |
|
| 21 | * |
|
| 22 | * @param Index $index |
|
| 23 | * |
|
| 24 | * @throws \InvalidArgumentException if incorrect object type is added |
|
| 25 | */ |
|
| 26 | public function add($index) { |
|
| 27 | if (!is_object($index) || get_class($index) !== 'Zortje\MySQLKeeper\Database\Table\Index') { |
|
| 28 | $argumentType = is_object($index) ? get_class($index) : gettype($index); |
|
| 29 | ||
| 30 | throw new \InvalidArgumentException(sprintf('Collection may only contain "%s" objects, "%s" is not allowed', 'Zortje\MySQLKeeper\Database\Table\Index', $argumentType)); |
|
| 31 | } |
|
| 32 | ||
| 33 | $this->collection[] = $index; |
|
| 34 | } |
|
| 35 | ||
| 36 | /** |
|
| 37 | * Get index collection with non primary key indices |
|
| 38 | * |
|
| 39 | * @return IndexCollection |
|
| 40 | */ |
|
| 41 | public function isNotPrimaryKey() { |
|
| 42 | $indices = new IndexCollection(); |
|
| 43 | ||
| 44 | foreach ($this->collection as $index) { |
|
| 45 | if ($index->isPrimaryKey() === false) { |
|
| 46 | $indices->add($index); |
|
| 47 | } |
|
| 48 | } |
|
| 49 | ||
| 50 | return $indices; |
|
| 51 | } |
|
| 52 | } |
|
| 53 | ||