@@ -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