@@ -9,6 +9,7 @@ import { Err, Ok, Result } from "@openally/result";
99import { AssertConnectionError , AssertDisconnectionError } from "../error/connection.error.js" ;
1010import { parseInput , parseOutput } from "../../utils/stream/index.js" ;
1111import type { DatabaseConnection , KeyType , Value } from "../../types/index.js" ;
12+ import { SetValueError } from "../error/redis.adapter.error.js" ;
1213
1314// CONSTANTS
1415const kDefaultAttempt = 4 ;
@@ -107,9 +108,12 @@ export class RedisAdapter<T extends StringOrObject = StringOrObject> extends Red
107108 return value === "false" || value === "true" ? Buffer . from ( value ) : value ;
108109 }
109110
111+ let finalValue ;
112+
110113 if ( type === "raw" ) {
111114 const payload = typeof value === "object" ? JSON . stringify ( value ) : booleanStringToBuffer ( value ) ;
112- multiRedis . set ( finalKey , payload ) ;
115+ finalValue = payload ;
116+ multiRedis . set ( finalKey , finalValue ) ;
113117 }
114118 else {
115119 const propsMap = new Map ( Object . entries ( parseInput ( value ) ) . map ( ( [ key , value ] ) => {
@@ -120,14 +124,21 @@ export class RedisAdapter<T extends StringOrObject = StringOrObject> extends Red
120124 return [ key , booleanStringToBuffer ( value ) ] ;
121125 } ) ) as Map < string , Value > ;
122126
123- multiRedis . hmset ( finalKey , propsMap ) ;
127+ finalValue = Object . fromEntries ( propsMap ) ;
128+
129+ multiRedis . hmset ( finalKey , finalValue ) ;
124130 }
125131
126132 if ( expiresIn ) {
127133 multiRedis . pexpire ( finalKey , expiresIn ) ;
128134 }
129135
130- await multiRedis . exec ( ) ;
136+ try {
137+ await multiRedis . exec ( ) ;
138+ }
139+ catch {
140+ return Err ( new SetValueError ( finalKey , finalValue ) ) ;
141+ }
131142
132143 return Ok ( finalKey ) ;
133144 }
0 commit comments