Skip to content

Commit 33cd1eb

Browse files
authored
fix(./class/adapter/redis.adapter.ts): use object over map, implem error handling (#177)
1 parent ed96cd9 commit 33cd1eb

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

src/class/adapter/redis.adapter.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { Err, Ok, Result } from "@openally/result";
99
import { AssertConnectionError, AssertDisconnectionError } from "../error/connection.error.js";
1010
import { parseInput, parseOutput } from "../../utils/stream/index.js";
1111
import type { DatabaseConnection, KeyType, Value } from "../../types/index.js";
12+
import { SetValueError } from "../error/redis.adapter.error.js";
1213

1314
// CONSTANTS
1415
const 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
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export class SetValueError extends Error {
2+
constructor(key: string | Buffer, value: unknown) {
3+
super(`Redis Transaction failed for the given key: ${key} & value: ${value}`);
4+
}
5+
}

0 commit comments

Comments
 (0)