From e2dc9265d453add5dc270b448632be327a5126e5 Mon Sep 17 00:00:00 2001 From: Jan Pecha Date: Fri, 30 Aug 2019 18:25:15 +0200 Subject: [PATCH] added Driver::escapeDateInterval() (BC break) (#334) --- src/Dibi/Drivers/FirebirdDriver.php | 6 ++++++ src/Dibi/Drivers/MySqliDriver.php | 6 ++++++ src/Dibi/Drivers/OdbcDriver.php | 6 ++++++ src/Dibi/Drivers/OracleDriver.php | 6 ++++++ src/Dibi/Drivers/PdoDriver.php | 6 ++++++ src/Dibi/Drivers/PostgreDriver.php | 6 ++++++ src/Dibi/Drivers/SqliteDriver.php | 6 ++++++ src/Dibi/Drivers/SqlsrvDriver.php | 6 ++++++ src/Dibi/Translator.php | 3 +++ src/Dibi/interfaces.php | 4 ++-- tests/dibi/Translator.DateInterval.phpt | 17 +++++++++++++++++ 11 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 tests/dibi/Translator.DateInterval.phpt diff --git a/src/Dibi/Drivers/FirebirdDriver.php b/src/Dibi/Drivers/FirebirdDriver.php index 50551a52d..cf6890f66 100644 --- a/src/Dibi/Drivers/FirebirdDriver.php +++ b/src/Dibi/Drivers/FirebirdDriver.php @@ -259,6 +259,12 @@ public function escapeDateTime(\DateTimeInterface $value): string } + public function escapeDateInterval(\DateInterval $value): string + { + throw new Dibi\NotImplementedException; + } + + /** * Encodes string for use in a LIKE statement. */ diff --git a/src/Dibi/Drivers/MySqliDriver.php b/src/Dibi/Drivers/MySqliDriver.php index f38630aa8..c04e15e49 100644 --- a/src/Dibi/Drivers/MySqliDriver.php +++ b/src/Dibi/Drivers/MySqliDriver.php @@ -302,6 +302,12 @@ public function escapeDateTime(\DateTimeInterface $value): string } + public function escapeDateInterval(\DateInterval $value): string + { + throw new Dibi\NotImplementedException; + } + + /** * Encodes string for use in a LIKE statement. */ diff --git a/src/Dibi/Drivers/OdbcDriver.php b/src/Dibi/Drivers/OdbcDriver.php index 17b6ac343..a235df56a 100644 --- a/src/Dibi/Drivers/OdbcDriver.php +++ b/src/Dibi/Drivers/OdbcDriver.php @@ -238,6 +238,12 @@ public function escapeDateTime(\DateTimeInterface $value): string } + public function escapeDateInterval(\DateInterval $value): string + { + throw new Dibi\NotImplementedException; + } + + /** * Encodes string for use in a LIKE statement. */ diff --git a/src/Dibi/Drivers/OracleDriver.php b/src/Dibi/Drivers/OracleDriver.php index 369a24e53..4d7aa74c8 100644 --- a/src/Dibi/Drivers/OracleDriver.php +++ b/src/Dibi/Drivers/OracleDriver.php @@ -257,6 +257,12 @@ public function escapeDateTime(\DateTimeInterface $value): string } + public function escapeDateInterval(\DateInterval $value): string + { + throw new Dibi\NotImplementedException; + } + + /** * Encodes string for use in a LIKE statement. */ diff --git a/src/Dibi/Drivers/PdoDriver.php b/src/Dibi/Drivers/PdoDriver.php index 1e07af3f9..f9117a703 100644 --- a/src/Dibi/Drivers/PdoDriver.php +++ b/src/Dibi/Drivers/PdoDriver.php @@ -310,6 +310,12 @@ public function escapeDateTime(\DateTimeInterface $value): string } + public function escapeDateInterval(\DateInterval $value): string + { + throw new Dibi\NotImplementedException; + } + + /** * Encodes string for use in a LIKE statement. */ diff --git a/src/Dibi/Drivers/PostgreDriver.php b/src/Dibi/Drivers/PostgreDriver.php index d3fbdaf57..fdade5d47 100644 --- a/src/Dibi/Drivers/PostgreDriver.php +++ b/src/Dibi/Drivers/PostgreDriver.php @@ -304,6 +304,12 @@ public function escapeDateTime(\DateTimeInterface $value): string } + public function escapeDateInterval(\DateInterval $value): string + { + throw new Dibi\NotImplementedException; + } + + /** * Encodes string for use in a LIKE statement. */ diff --git a/src/Dibi/Drivers/SqliteDriver.php b/src/Dibi/Drivers/SqliteDriver.php index d5d1c9b7a..1f97f509f 100644 --- a/src/Dibi/Drivers/SqliteDriver.php +++ b/src/Dibi/Drivers/SqliteDriver.php @@ -242,6 +242,12 @@ public function escapeDateTime(\DateTimeInterface $value): string } + public function escapeDateInterval(\DateInterval $value): string + { + throw new Dibi\NotImplementedException; + } + + /** * Encodes string for use in a LIKE statement. */ diff --git a/src/Dibi/Drivers/SqlsrvDriver.php b/src/Dibi/Drivers/SqlsrvDriver.php index 818716222..f939a49ad 100644 --- a/src/Dibi/Drivers/SqlsrvDriver.php +++ b/src/Dibi/Drivers/SqlsrvDriver.php @@ -231,6 +231,12 @@ public function escapeDateTime(\DateTimeInterface $value): string } + public function escapeDateInterval(\DateInterval $value): string + { + throw new Dibi\NotImplementedException; + } + + /** * Encodes string for use in a LIKE statement. */ diff --git a/src/Dibi/Translator.php b/src/Dibi/Translator.php index 8b95238bc..12907b55b 100644 --- a/src/Dibi/Translator.php +++ b/src/Dibi/Translator.php @@ -456,6 +456,9 @@ public function formatValue($value, ?string $modifier): string } elseif ($value instanceof \DateTimeInterface) { return $this->driver->escapeDateTime($value); + } elseif ($value instanceof \DateInterval) { + return $this->driver->escapeDateInterval($value); + } elseif ($value instanceof Literal) { return (string) $value; diff --git a/src/Dibi/interfaces.php b/src/Dibi/interfaces.php index de3dbeeb0..9f6b21223 100644 --- a/src/Dibi/interfaces.php +++ b/src/Dibi/interfaces.php @@ -87,12 +87,12 @@ function escapeIdentifier(string $value): string; function escapeBool(bool $value): string; - function escapeDate(\DateTimeInterface $value): string; - function escapeDateTime(\DateTimeInterface $value): string; + function escapeDateInterval(\DateInterval $value): string; + /** * Encodes string for use in a LIKE statement. */ diff --git a/tests/dibi/Translator.DateInterval.phpt b/tests/dibi/Translator.DateInterval.phpt new file mode 100644 index 000000000..982b42a47 --- /dev/null +++ b/tests/dibi/Translator.DateInterval.phpt @@ -0,0 +1,17 @@ +formatValue(new DateInterval('PT10H20M30S'), null); + }, Dibi\Exception::class); +}