From 8774246ac35ede48efe6bd6a67b1a680be976c38 Mon Sep 17 00:00:00 2001 From: Giacomo Fabbian Date: Fri, 14 Feb 2020 00:09:31 +0100 Subject: [PATCH 01/11] [GF] added handling for milliseconds in UTCDateTime --- src/Jenssegers/Mongodb/Eloquent/Model.php | 4 ++-- src/Jenssegers/Mongodb/Query/Builder.php | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Jenssegers/Mongodb/Eloquent/Model.php b/src/Jenssegers/Mongodb/Eloquent/Model.php index d4a66b36a..4c34f0aff 100644 --- a/src/Jenssegers/Mongodb/Eloquent/Model.php +++ b/src/Jenssegers/Mongodb/Eloquent/Model.php @@ -89,7 +89,7 @@ public function fromDateTime($value) $value = parent::asDateTime($value); } - return new UTCDateTime($value->getTimestamp() * 1000); + return new UTCDateTime($value->format('Uv')); } /** @@ -99,7 +99,7 @@ protected function asDateTime($value) { // Convert UTCDateTime instances. if ($value instanceof UTCDateTime) { - return Carbon::createFromTimestamp($value->toDateTime()->getTimestamp()); + return Carbon::createFromTimestampMs($value->toDateTime()->format('Uv')); } return parent::asDateTime($value); diff --git a/src/Jenssegers/Mongodb/Query/Builder.php b/src/Jenssegers/Mongodb/Query/Builder.php index b2e1daf33..7c5c973ba 100644 --- a/src/Jenssegers/Mongodb/Query/Builder.php +++ b/src/Jenssegers/Mongodb/Query/Builder.php @@ -294,7 +294,7 @@ public function getFresh($columns = []) } } } - + // The _id field is mandatory when using grouping. if ($group && empty($group['_id'])) { $group['_id'] = null; @@ -930,18 +930,18 @@ protected function compileWheres() if (is_array($where['value'])) { array_walk_recursive($where['value'], function (&$item, $key) { if ($item instanceof DateTime) { - $item = new UTCDateTime($item->getTimestamp() * 1000); + $item = new UTCDateTime($item->format('Uv')); } }); } else { if ($where['value'] instanceof DateTime) { - $where['value'] = new UTCDateTime($where['value']->getTimestamp() * 1000); + $where['value'] = new UTCDateTime($where['value']->format('Uv')); } } } elseif (isset($where['values'])) { array_walk_recursive($where['values'], function (&$item, $key) { if ($item instanceof DateTime) { - $item = new UTCDateTime($item->getTimestamp() * 1000); + $item = new UTCDateTime($item->format('Uv')); } }); } From a84a10bb89b16b6f8e35e97370af47df5171b27f Mon Sep 17 00:00:00 2001 From: Giacomo Fabbian Date: Sat, 15 Feb 2020 11:40:42 +0100 Subject: [PATCH 02/11] [GF] Fix UTCDateTime precision --- .../Mongodb/Auth/DatabaseTokenRepository.php | 4 ++-- src/Jenssegers/Mongodb/Eloquent/Model.php | 2 +- tests/QueryBuilderTest.php | 11 ++++++----- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/Jenssegers/Mongodb/Auth/DatabaseTokenRepository.php b/src/Jenssegers/Mongodb/Auth/DatabaseTokenRepository.php index 6959facdb..b2eb9d67d 100644 --- a/src/Jenssegers/Mongodb/Auth/DatabaseTokenRepository.php +++ b/src/Jenssegers/Mongodb/Auth/DatabaseTokenRepository.php @@ -17,7 +17,7 @@ protected function getPayload($email, $token) return [ 'email' => $email, 'token' => $this->hasher->make($token), - 'created_at' => new UTCDateTime(time() * 1000), + 'created_at' => new UTCDateTime(now()->format('Uv')), ]; } @@ -37,7 +37,7 @@ protected function tokenExpired($createdAt) protected function tokenRecentlyCreated($createdAt) { $createdAt = $this->convertDateTime($createdAt); - + return parent::tokenRecentlyCreated($createdAt); } diff --git a/src/Jenssegers/Mongodb/Eloquent/Model.php b/src/Jenssegers/Mongodb/Eloquent/Model.php index 4c34f0aff..545e90f71 100644 --- a/src/Jenssegers/Mongodb/Eloquent/Model.php +++ b/src/Jenssegers/Mongodb/Eloquent/Model.php @@ -118,7 +118,7 @@ public function getDateFormat() */ public function freshTimestamp() { - return new UTCDateTime(Carbon::now()); + return new UTCDateTime(now()->format('Uv')); } /** diff --git a/tests/QueryBuilderTest.php b/tests/QueryBuilderTest.php index 3306ede29..1ea1888d4 100644 --- a/tests/QueryBuilderTest.php +++ b/tests/QueryBuilderTest.php @@ -1,6 +1,7 @@ insert([ - ['name' => 'John Doe', 'birthday' => new UTCDateTime(1000 * strtotime("1980-01-01 00:00:00"))], - ['name' => 'Jane Doe', 'birthday' => new UTCDateTime(1000 * strtotime("1981-01-01 00:00:00"))], - ['name' => 'Robert Roe', 'birthday' => new UTCDateTime(1000 * strtotime("1982-01-01 00:00:00"))], - ['name' => 'Mark Moe', 'birthday' => new UTCDateTime(1000 * strtotime("1983-01-01 00:00:00"))], + ['name' => 'John Doe', 'birthday' => new UTCDateTime(Carbon::parse("1980-01-01 00:00:00")->format('Uv'))], + ['name' => 'Jane Doe', 'birthday' => new UTCDateTime(Carbon::parse("1981-01-01 00:00:00")->format('Uv'))], + ['name' => 'Robert Roe', 'birthday' => new UTCDateTime(Carbon::parse("1982-01-01 00:00:00")->format('Uv'))], + ['name' => 'Mark Moe', 'birthday' => new UTCDateTime(Carbon::parse("1983-01-01 00:00:00")->format('Uv'))], ]); $user = DB::collection('users') - ->where('birthday', new UTCDateTime(1000 * strtotime("1980-01-01 00:00:00"))) + ->where('birthday', new UTCDateTime(Carbon::parse("1980-01-01 00:00:00")->format('Uv'))) ->first(); $this->assertEquals('John Doe', $user['name']); From a5b7526dd0a594e02ceb30eb377a0ed056647209 Mon Sep 17 00:00:00 2001 From: Giacomo Fabbian Date: Sat, 15 Feb 2020 14:54:16 +0100 Subject: [PATCH 03/11] [GF] Changed carbon import --- src/Jenssegers/Mongodb/Eloquent/Model.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Jenssegers/Mongodb/Eloquent/Model.php b/src/Jenssegers/Mongodb/Eloquent/Model.php index 545e90f71..0dffc6a24 100644 --- a/src/Jenssegers/Mongodb/Eloquent/Model.php +++ b/src/Jenssegers/Mongodb/Eloquent/Model.php @@ -2,7 +2,7 @@ namespace Jenssegers\Mongodb\Eloquent; -use Carbon\Carbon; +use Illuminate\Support\Carbon; use DateTime; use Illuminate\Contracts\Queue\QueueableCollection; use Illuminate\Contracts\Queue\QueueableEntity; From ddcf6a7b3574513e9b1e20e192a8f937f3dde6f3 Mon Sep 17 00:00:00 2001 From: Giacomo Fabbian Date: Mon, 17 Feb 2020 10:48:20 +0100 Subject: [PATCH 04/11] Update src/Jenssegers/Mongodb/Auth/DatabaseTokenRepository.php Co-Authored-By: Divine <48183131+divine@users.noreply.github.com> --- src/Jenssegers/Mongodb/Auth/DatabaseTokenRepository.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Jenssegers/Mongodb/Auth/DatabaseTokenRepository.php b/src/Jenssegers/Mongodb/Auth/DatabaseTokenRepository.php index b2eb9d67d..02d626759 100644 --- a/src/Jenssegers/Mongodb/Auth/DatabaseTokenRepository.php +++ b/src/Jenssegers/Mongodb/Auth/DatabaseTokenRepository.php @@ -17,7 +17,7 @@ protected function getPayload($email, $token) return [ 'email' => $email, 'token' => $this->hasher->make($token), - 'created_at' => new UTCDateTime(now()->format('Uv')), + 'created_at' => new UTCDateTime(Date::now()->format('Uv')), ]; } From ddbbadf4b3ceb7617403d06fc1242b6ccba2033f Mon Sep 17 00:00:00 2001 From: Giacomo Fabbian Date: Mon, 17 Feb 2020 10:48:41 +0100 Subject: [PATCH 05/11] Update src/Jenssegers/Mongodb/Eloquent/Model.php Co-Authored-By: Divine <48183131+divine@users.noreply.github.com> --- src/Jenssegers/Mongodb/Eloquent/Model.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Jenssegers/Mongodb/Eloquent/Model.php b/src/Jenssegers/Mongodb/Eloquent/Model.php index 0dffc6a24..86388b7da 100644 --- a/src/Jenssegers/Mongodb/Eloquent/Model.php +++ b/src/Jenssegers/Mongodb/Eloquent/Model.php @@ -99,7 +99,7 @@ protected function asDateTime($value) { // Convert UTCDateTime instances. if ($value instanceof UTCDateTime) { - return Carbon::createFromTimestampMs($value->toDateTime()->format('Uv')); + return Date::createFromTimestampMs($value->toDateTime()->format('Uv')); } return parent::asDateTime($value); From cd15f55302e32128a6896d66503da5e424c5fd81 Mon Sep 17 00:00:00 2001 From: Giacomo Fabbian Date: Mon, 17 Feb 2020 10:48:51 +0100 Subject: [PATCH 06/11] Update tests/QueryBuilderTest.php Co-Authored-By: Divine <48183131+divine@users.noreply.github.com> --- tests/QueryBuilderTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/QueryBuilderTest.php b/tests/QueryBuilderTest.php index 1ea1888d4..d91046112 100644 --- a/tests/QueryBuilderTest.php +++ b/tests/QueryBuilderTest.php @@ -1,7 +1,7 @@ Date: Mon, 17 Feb 2020 10:49:06 +0100 Subject: [PATCH 07/11] Update tests/QueryBuilderTest.php Co-Authored-By: Divine <48183131+divine@users.noreply.github.com> --- tests/QueryBuilderTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/QueryBuilderTest.php b/tests/QueryBuilderTest.php index d91046112..f2c7b954c 100644 --- a/tests/QueryBuilderTest.php +++ b/tests/QueryBuilderTest.php @@ -546,7 +546,7 @@ public function testUpdateSubdocument() public function testDates() { DB::collection('users')->insert([ - ['name' => 'John Doe', 'birthday' => new UTCDateTime(Carbon::parse("1980-01-01 00:00:00")->format('Uv'))], + ['name' => 'John Doe', 'birthday' => new UTCDateTime(Date::parse("1980-01-01 00:00:00")->format('Uv'))], ['name' => 'Jane Doe', 'birthday' => new UTCDateTime(Carbon::parse("1981-01-01 00:00:00")->format('Uv'))], ['name' => 'Robert Roe', 'birthday' => new UTCDateTime(Carbon::parse("1982-01-01 00:00:00")->format('Uv'))], ['name' => 'Mark Moe', 'birthday' => new UTCDateTime(Carbon::parse("1983-01-01 00:00:00")->format('Uv'))], From 0f8526c6fedb3f98b710fc2b86ae96d0193e871f Mon Sep 17 00:00:00 2001 From: Giacomo Fabbian Date: Mon, 17 Feb 2020 10:49:14 +0100 Subject: [PATCH 08/11] Update src/Jenssegers/Mongodb/Eloquent/Model.php Co-Authored-By: Divine <48183131+divine@users.noreply.github.com> --- src/Jenssegers/Mongodb/Eloquent/Model.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Jenssegers/Mongodb/Eloquent/Model.php b/src/Jenssegers/Mongodb/Eloquent/Model.php index 86388b7da..cfe3b1ef5 100644 --- a/src/Jenssegers/Mongodb/Eloquent/Model.php +++ b/src/Jenssegers/Mongodb/Eloquent/Model.php @@ -118,7 +118,7 @@ public function getDateFormat() */ public function freshTimestamp() { - return new UTCDateTime(now()->format('Uv')); + return new UTCDateTime(Date::now()->format('Uv')); } /** From 536ae66a61bd6d8cf37c9d6c265c2be4390879a3 Mon Sep 17 00:00:00 2001 From: Giacomo Fabbian Date: Mon, 17 Feb 2020 10:52:33 +0100 Subject: [PATCH 09/11] [GF] Fix import --- src/Jenssegers/Mongodb/Auth/DatabaseTokenRepository.php | 1 + src/Jenssegers/Mongodb/Eloquent/Model.php | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Jenssegers/Mongodb/Auth/DatabaseTokenRepository.php b/src/Jenssegers/Mongodb/Auth/DatabaseTokenRepository.php index 02d626759..cf0f89ea1 100644 --- a/src/Jenssegers/Mongodb/Auth/DatabaseTokenRepository.php +++ b/src/Jenssegers/Mongodb/Auth/DatabaseTokenRepository.php @@ -5,6 +5,7 @@ use DateTime; use DateTimeZone; use Illuminate\Auth\Passwords\DatabaseTokenRepository as BaseDatabaseTokenRepository; +use Illuminate\Support\Facades\Date; use MongoDB\BSON\UTCDateTime; class DatabaseTokenRepository extends BaseDatabaseTokenRepository diff --git a/src/Jenssegers/Mongodb/Eloquent/Model.php b/src/Jenssegers/Mongodb/Eloquent/Model.php index cfe3b1ef5..ec1468332 100644 --- a/src/Jenssegers/Mongodb/Eloquent/Model.php +++ b/src/Jenssegers/Mongodb/Eloquent/Model.php @@ -2,7 +2,6 @@ namespace Jenssegers\Mongodb\Eloquent; -use Illuminate\Support\Carbon; use DateTime; use Illuminate\Contracts\Queue\QueueableCollection; use Illuminate\Contracts\Queue\QueueableEntity; From 5a7b874efd3bc597cf283233ff3fa449cc9de27f Mon Sep 17 00:00:00 2001 From: Giacomo Fabbian Date: Mon, 17 Feb 2020 10:55:55 +0100 Subject: [PATCH 10/11] [GF] Added missing import Date --- src/Jenssegers/Mongodb/Eloquent/Model.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Jenssegers/Mongodb/Eloquent/Model.php b/src/Jenssegers/Mongodb/Eloquent/Model.php index ec1468332..54ef5129b 100644 --- a/src/Jenssegers/Mongodb/Eloquent/Model.php +++ b/src/Jenssegers/Mongodb/Eloquent/Model.php @@ -8,6 +8,7 @@ use Illuminate\Database\Eloquent\Model as BaseModel; use Illuminate\Database\Eloquent\Relations\Relation; use Illuminate\Support\Arr; +use Illuminate\Support\Facades\Date; use Illuminate\Support\Str; use Jenssegers\Mongodb\Query\Builder as QueryBuilder; use MongoDB\BSON\Binary; From d6dddffde4f72cde2739f65332a5a00bb6f03f55 Mon Sep 17 00:00:00 2001 From: Giacomo Fabbian Date: Mon, 17 Feb 2020 11:01:21 +0100 Subject: [PATCH 11/11] [GF] Change Carbon with Date on date tests --- tests/QueryBuilderTest.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/QueryBuilderTest.php b/tests/QueryBuilderTest.php index f2c7b954c..40b1febc2 100644 --- a/tests/QueryBuilderTest.php +++ b/tests/QueryBuilderTest.php @@ -547,13 +547,13 @@ public function testDates() { DB::collection('users')->insert([ ['name' => 'John Doe', 'birthday' => new UTCDateTime(Date::parse("1980-01-01 00:00:00")->format('Uv'))], - ['name' => 'Jane Doe', 'birthday' => new UTCDateTime(Carbon::parse("1981-01-01 00:00:00")->format('Uv'))], - ['name' => 'Robert Roe', 'birthday' => new UTCDateTime(Carbon::parse("1982-01-01 00:00:00")->format('Uv'))], - ['name' => 'Mark Moe', 'birthday' => new UTCDateTime(Carbon::parse("1983-01-01 00:00:00")->format('Uv'))], + ['name' => 'Jane Doe', 'birthday' => new UTCDateTime(Date::parse("1981-01-01 00:00:00")->format('Uv'))], + ['name' => 'Robert Roe', 'birthday' => new UTCDateTime(Date::parse("1982-01-01 00:00:00")->format('Uv'))], + ['name' => 'Mark Moe', 'birthday' => new UTCDateTime(Date::parse("1983-01-01 00:00:00")->format('Uv'))], ]); $user = DB::collection('users') - ->where('birthday', new UTCDateTime(Carbon::parse("1980-01-01 00:00:00")->format('Uv'))) + ->where('birthday', new UTCDateTime(Date::parse("1980-01-01 00:00:00")->format('Uv'))) ->first(); $this->assertEquals('John Doe', $user['name']);