Skip to content

Commit 9f2a95c

Browse files
authored
Merge pull request #553 from Geolim4/final
Fixed #549
2 parents 4951307 + a0f6ee8 commit 9f2a95c

File tree

1 file changed

+24
-8
lines changed

1 file changed

+24
-8
lines changed

src/phpFastCache/Drivers/Mongodb/Driver.php

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -87,15 +87,22 @@ protected function driverWrite(CacheItemInterface $item)
8787
*/
8888
if ($item instanceof Item) {
8989
try {
90+
$set = [
91+
self::DRIVER_DATA_WRAPPER_INDEX => new Binary($this->encode($item->get()), Binary::TYPE_GENERIC),
92+
self::DRIVER_TAGS_WRAPPER_INDEX => new Binary($this->encode($item->getTags()), Binary::TYPE_GENERIC),
93+
self::DRIVER_EDATE_WRAPPER_INDEX => ($item->getTtl() > 0 ? new UTCDateTime((time() + $item->getTtl()) * 1000) : new UTCDateTime(time() * 1000)),
94+
];
95+
96+
if(!empty($this->config[ 'itemDetailedDate' ])){
97+
$set += [
98+
self::DRIVER_MDATE_WRAPPER_INDEX => ($item->getModificationDate() ? new UTCDateTime(($item->getModificationDate()->getTimestamp()) * 1000) : new UTCDateTime(time() * 1000)),
99+
self::DRIVER_CDATE_WRAPPER_INDEX => ($item->getCreationDate() ? new UTCDateTime(($item->getCreationDate()->getTimestamp()) * 1000) : new UTCDateTime(time() * 1000)),
100+
];
101+
}
102+
90103
$result = (array)$this->getCollection()->updateOne(
91104
['_id' => $item->getEncodedKey()],
92-
[
93-
'$set' => [
94-
self::DRIVER_DATA_WRAPPER_INDEX => new Binary($this->encode($item->get()), Binary::TYPE_GENERIC),
95-
self::DRIVER_TAGS_WRAPPER_INDEX => new Binary($this->encode($item->getTags()), Binary::TYPE_GENERIC),
96-
self::DRIVER_EDATE_WRAPPER_INDEX => ($item->getTtl() > 0 ? new UTCDateTime((time() + $item->getTtl()) * 1000) : new UTCDateTime(time() * 1000)),
97-
],
98-
],
105+
['$set' => $set],
99106
['upsert' => true, 'multiple' => false]
100107
);
101108
} catch (MongoDBException $e) {
@@ -117,11 +124,20 @@ protected function driverRead(CacheItemInterface $item)
117124
$document = $this->getCollection()->findOne(['_id' => $item->getEncodedKey()]);
118125

119126
if ($document) {
120-
return [
127+
$return = [
121128
self::DRIVER_DATA_WRAPPER_INDEX => $this->decode($document[ self::DRIVER_DATA_WRAPPER_INDEX ]->getData()),
122129
self::DRIVER_TAGS_WRAPPER_INDEX => $this->decode($document[ self::DRIVER_TAGS_WRAPPER_INDEX ]->getData()),
123130
self::DRIVER_EDATE_WRAPPER_INDEX => (new \DateTime())->setTimestamp($document[ self::DRIVER_EDATE_WRAPPER_INDEX ]->toDateTime()->getTimestamp()),
124131
];
132+
133+
if(!empty($this->config[ 'itemDetailedDate' ])){
134+
$return += [
135+
self::DRIVER_MDATE_WRAPPER_INDEX => (new \DateTime())->setTimestamp($document[ self::DRIVER_MDATE_WRAPPER_INDEX ]->toDateTime()->getTimestamp()),
136+
self::DRIVER_CDATE_WRAPPER_INDEX => (new \DateTime())->setTimestamp($document[ self::DRIVER_CDATE_WRAPPER_INDEX ]->toDateTime()->getTimestamp()),
137+
];
138+
}
139+
140+
return $return;
125141
} else {
126142
return null;
127143
}

0 commit comments

Comments
 (0)