Skip to content

Commit 7921142

Browse files
committed
Fixed #549
1 parent 651e5cd commit 7921142

File tree

1 file changed

+25
-6
lines changed

1 file changed

+25
-6
lines changed

src/phpFastCache/Drivers/Mongodb/Driver.php

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,22 @@ protected function driverRead(CacheItemInterface $item)
6868
$document = $this->getCollection()->findOne(['_id' => $item->getEncodedKey()]);
6969

7070
if ($document) {
71-
return [
71+
$return = [
7272
self::DRIVER_DATA_WRAPPER_INDEX => $this->decode($document[ self::DRIVER_DATA_WRAPPER_INDEX ]->getData()),
7373
self::DRIVER_TAGS_WRAPPER_INDEX => $this->decode($document[ self::DRIVER_TAGS_WRAPPER_INDEX ]->getData()),
7474
self::DRIVER_EDATE_WRAPPER_INDEX => (new \DateTime())->setTimestamp($document[ self::DRIVER_EDATE_WRAPPER_INDEX ]->toDateTime()->getTimestamp()),
7575
];
76+
77+
if (!empty($this->config[ 'itemDetailedDate' ])) {
78+
$return += [
79+
self::DRIVER_MDATE_WRAPPER_INDEX => (new \DateTime())->setTimestamp($document[ self::DRIVER_MDATE_WRAPPER_INDEX ]->toDateTime()
80+
->getTimestamp()),
81+
self::DRIVER_CDATE_WRAPPER_INDEX => (new \DateTime())->setTimestamp($document[ self::DRIVER_CDATE_WRAPPER_INDEX ]->toDateTime()
82+
->getTimestamp()),
83+
];
84+
}
85+
86+
return $return;
7687
} else {
7788
return null;
7889
}
@@ -91,14 +102,22 @@ protected function driverWrite(CacheItemInterface $item): bool
91102
*/
92103
if ($item instanceof Item) {
93104
try {
105+
$set = [
106+
self::DRIVER_DATA_WRAPPER_INDEX => new Binary($this->encode($item->get()), Binary::TYPE_GENERIC),
107+
self::DRIVER_TAGS_WRAPPER_INDEX => new Binary($this->encode($item->getTags()), Binary::TYPE_GENERIC),
108+
self::DRIVER_EDATE_WRAPPER_INDEX => ($item->getTtl() > 0 ? new UTCDateTime((time() + $item->getTtl()) * 1000) : new UTCDateTime(time() * 1000)),
109+
];
110+
111+
if(!empty($this->config[ 'itemDetailedDate' ])){
112+
$set += [
113+
self::DRIVER_MDATE_WRAPPER_INDEX => ($item->getModificationDate() ? new UTCDateTime(($item->getModificationDate()->getTimestamp()) * 1000) : new UTCDateTime(time() * 1000)),
114+
self::DRIVER_CDATE_WRAPPER_INDEX => ($item->getCreationDate() ? new UTCDateTime(($item->getCreationDate()->getTimestamp()) * 1000) : new UTCDateTime(time() * 1000)),
115+
];
116+
}
94117
$result = (array)$this->getCollection()->updateOne(
95118
['_id' => $item->getEncodedKey()],
96119
[
97-
'$set' => [
98-
self::DRIVER_DATA_WRAPPER_INDEX => new Binary($this->encode($item->get()), Binary::TYPE_GENERIC),
99-
self::DRIVER_TAGS_WRAPPER_INDEX => new Binary($this->encode($item->getTags()), Binary::TYPE_GENERIC),
100-
self::DRIVER_EDATE_WRAPPER_INDEX => ($item->getTtl() > 0 ? new UTCDateTime((time() + $item->getTtl()) * 1000) : new UTCDateTime(time() * 1000)),
101-
],
120+
'$set' => $set,
102121
],
103122
['upsert' => true, 'multiple' => false]
104123
);

0 commit comments

Comments
 (0)