From 3aed13e6a0dfd12ed624443ccb2a8a597f83e384 Mon Sep 17 00:00:00 2001 From: Aldarien Date: Tue, 9 Mar 2021 00:14:31 -0300 Subject: [PATCH] FIX: usar correcta descripcion --- common/Alias/Model.php | 125 +++++++++++++++++++++++++++++++++++++--- common/Define/Model.php | 125 +++------------------------------------- 2 files changed, 125 insertions(+), 125 deletions(-) diff --git a/common/Alias/Model.php b/common/Alias/Model.php index 9df62dd..1ffdd9c 100644 --- a/common/Alias/Model.php +++ b/common/Alias/Model.php @@ -1,14 +1,125 @@ factory = $factory; + return $this; + } + + protected function checkDefinitions(array $definitions, array $required, array $default) { + foreach ($default as $key => $value) { + if (!isset($definitions[$key])) { + $definitions[$key] = $value; + } + } + foreach ($required as $definition) { + if (!isset($definitions[$definition])) { + $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 1); + throw new \InvalidArgumentException($definition . ' is required for ' . $trace[1]['function'] . ' in ' . get_called_class()); + } + } + return $definitions; + } + public function parentOf(string $child_model_class, array $relation_definitions): ?array { + $relation_definitions = $this->checkDefinitions($relation_definitions, [ + Model::SELF_KEY, + Model::CHILD_KEY + ], [ + Model::SELF_KEY => 'id' + ]); + return $this->factory + ->find($child_model_class) + ->where([ + [ + $relation_definitions[Model::CHILD_KEY], + $this->{$relation_definitions[Model::SELF_KEY]} + ] + ]) + ->many(); + } + public function childOf(string $parent_model_class, array $relation_definitions): ?ModelInterface { + $relation_definitions = $this->checkDefinitions($relation_definitions, [ + Model::SELF_KEY, + Model::PARENT_KEY + ], [ + Model::PARENT_KEY => 'id' + ]); + $parent_table = (new $parent_model_class())->getTable(); + return $this->factory + ->find($parent_model_class) + ->where([ + [ + $relation_definitions[Model::PARENT_KEY], + $this->{$relation_definitions[Model::SELF_KEY]} + ] + ]) + ->one(); + } + public function siblingOf(string $sibling_model_class, string $connecting_table, array $relation_definitions): ?array { + $relation_definitions = $this->checkDefinitions($relation_definitions, [ + Model::SELF_KEY, + Model::SIBLING_KEY, + Model::SELF_CONNECT_KEY, + Model::SIBLING_CONNECT_KEY + ], [ + Model::SELF_KEY => 'id', + Model::SIBLING_KEY => 'id' + ]); + $sibling_table = (new $sibling_model_class())->getTable(); + return $this->find($sibling_model_class) + ->select([ + [ + $sibling_table, + '*' + ], + [ + $connecting_table, + '*' + ] + ]) + ->join([ + [ + $connecting_table, + implode('.', [ + $connecting_table, + $relation_definitions[Model::SIBLING_CONNECT_KEY] + ]), + implode('.', [ + $sibling_table, + $relation_definitions[Model::SIBLING_KEY] + ]) + ] + ]) + ->where([ + [ + implode('.', [ + $connecting_table, + $relation_definitions[Model::SELF_CONNECT_KEY] + ]), + $this->{$relation_definitions[Model::SELF_KEY]} + ] + ]) + ->many(); + } + + public function toArray(): array { + return $this->asArray(); + } } diff --git a/common/Define/Model.php b/common/Define/Model.php index 5be2247..deab442 100644 --- a/common/Define/Model.php +++ b/common/Define/Model.php @@ -1,125 +1,14 @@ factory = $factory; - return $this; - } - - protected function checkDefinitions(array $definitions, array $required, array $default) { - foreach ($default as $key => $value) { - if (!isset($definitions[$key])) { - $definitions[$key] = $value; - } - } - foreach ($required as $definition) { - if (!isset($definitions[$definition])) { - $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 1); - throw new \InvalidArgumentException($definition . ' is required for ' . $trace[1]['function'] . ' in ' . get_called_class()); - } - } - return $definitions; - } - public function parentOf(string $child_model_class, array $relation_definitions): ?array { - $relation_definitions = $this->checkDefinitions($relation_definitions, [ - Model::SELF_KEY, - Model::CHILD_KEY - ], [ - Model::SELF_KEY => 'id' - ]); - return $this->factory - ->find($child_model_class) - ->where([ - [ - $relation_definitions[Model::CHILD_KEY], - $this->{$relation_definitions[Model::SELF_KEY]} - ] - ]) - ->many(); - } - public function childOf(string $parent_model_class, array $relation_definitions): ?ModelInterface { - $relation_definitions = $this->checkDefinitions($relation_definitions, [ - Model::SELF_KEY, - Model::PARENT_KEY - ], [ - Model::PARENT_KEY => 'id' - ]); - $parent_table = (new $parent_model_class())->getTable(); - return $this->factory - ->find($parent_model_class) - ->where([ - [ - $relation_definitions[Model::PARENT_KEY], - $this->{$relation_definitions[Model::SELF_KEY]} - ] - ]) - ->one(); - } - public function siblingOf(string $sibling_model_class, string $connecting_table, array $relation_definitions): ?array { - $relation_definitions = $this->checkDefinitions($relation_definitions, [ - Model::SELF_KEY, - Model::SIBLING_KEY, - Model::SELF_CONNECT_KEY, - Model::SIBLING_CONNECT_KEY - ], [ - Model::SELF_KEY => 'id', - Model::SIBLING_KEY => 'id' - ]); - $sibling_table = (new $sibling_model_class())->getTable(); - return $this->find($sibling_model_class) - ->select([ - [ - $sibling_table, - '*' - ], - [ - $connecting_table, - '*' - ] - ]) - ->join([ - [ - $connecting_table, - implode('.', [ - $connecting_table, - $relation_definitions[Model::SIBLING_CONNECT_KEY] - ]), - implode('.', [ - $sibling_table, - $relation_definitions[Model::SIBLING_KEY] - ]) - ] - ]) - ->where([ - [ - implode('.', [ - $connecting_table, - $relation_definitions[Model::SELF_CONNECT_KEY] - ]), - $this->{$relation_definitions[Model::SELF_KEY]} - ] - ]) - ->many(); - } - - public function toArray(): array { - return $this->asArray(); - } + public function toArray(): array; }