From 5054d8f19bafe88bb12fbbe3fedd6df6ac1b8277 Mon Sep 17 00:00:00 2001 From: Juan Pablo Vial Date: Tue, 4 Mar 2025 11:53:14 -0300 Subject: [PATCH 1/2] FIX: casos en que PDO::execute retorna falso, pero sin tirar PDOException DateTime con parametro pasado DateTime Model::jsonComplement --- app/common/Ideal/Model.php | 8 +++++++- app/common/Ideal/Repository.php | 4 +++- app/common/Implement/Repository/Mapper/DateTime.php | 13 ++++++++++++- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/app/common/Ideal/Model.php b/app/common/Ideal/Model.php index eade31b..c68827a 100644 --- a/app/common/Ideal/Model.php +++ b/app/common/Ideal/Model.php @@ -26,7 +26,13 @@ abstract class Model implements Define\Model public function jsonSerialize(): mixed { return [ - 'id' => $this->id + 'id' => $this->id, + ...$this->jsonComplement() ]; } + + protected function jsonComplement(): array + { + return []; + } } diff --git a/app/common/Ideal/Repository.php b/app/common/Ideal/Repository.php index e8f9bee..9a46692 100644 --- a/app/common/Ideal/Repository.php +++ b/app/common/Ideal/Repository.php @@ -204,9 +204,11 @@ abstract class Repository implements Define\Repository { try { $result = $this->connection->execute($query, $data)->fetch(PDO::FETCH_ASSOC); + if ($result === false) { + throw new EmptyResult($query); + } } catch (PDOException $exception) { throw new EmptyResult($query, $exception); - } return $this->load($result); } diff --git a/app/common/Implement/Repository/Mapper/DateTime.php b/app/common/Implement/Repository/Mapper/DateTime.php index bbeb388..10c851d 100644 --- a/app/common/Implement/Repository/Mapper/DateTime.php +++ b/app/common/Implement/Repository/Mapper/DateTime.php @@ -2,6 +2,7 @@ namespace Incoviba\Common\Implement\Repository\Mapper; use DateTimeImmutable; +use DateMalformedStringException; use Incoviba\Common\Implement\Repository\Mapper; class DateTime extends Mapper @@ -9,7 +10,17 @@ class DateTime extends Mapper public function __construct(string $column, ?string $property = null) { $this->setFunction(function($data) use ($column) { - return new DateTimeImmutable($data[$column] ?? ''); + if (!isset($data[$column])) { + return null; + } + if (is_a($data[$column], DateTimeImmutable::class)) { + return $data[$column]; + } + try { + return new DateTimeImmutable($data[$column] ?? ''); + } catch (DateMalformedStringException) { + return new DateTimeImmutable(); + } }); if ($property !== null) { $this->setProperty($property); From 621da92b684d085dca9fcb3efe007781a7e87aca Mon Sep 17 00:00:00 2001 From: Juan Pablo Vial Date: Tue, 4 Mar 2025 13:52:01 -0300 Subject: [PATCH 2/2] FIX: ServiceActions --- app/src/Exception/ServiceAction/Create.php | 15 +++++++++++++++ app/src/Exception/ServiceAction/Delete.php | 15 +++++++++++++++ app/src/Exception/ServiceAction/Read.php | 15 +++++++++++++++ app/src/Exception/ServiceAction/Update.php | 15 +++++++++++++++ app/src/Exception/ServiceActionFail.php | 15 +++++++++++++++ 5 files changed, 75 insertions(+) create mode 100644 app/src/Exception/ServiceAction/Create.php create mode 100644 app/src/Exception/ServiceAction/Delete.php create mode 100644 app/src/Exception/ServiceAction/Read.php create mode 100644 app/src/Exception/ServiceAction/Update.php create mode 100644 app/src/Exception/ServiceActionFail.php diff --git a/app/src/Exception/ServiceAction/Create.php b/app/src/Exception/ServiceAction/Create.php new file mode 100644 index 0000000..7983ac4 --- /dev/null +++ b/app/src/Exception/ServiceAction/Create.php @@ -0,0 +1,15 @@ +