(
prefix: DataPrefix_,
suffix: string,
fields: DataField_[],
params?: HMGetParams,
)
| 257 | return (await this.hmget(prefix, suffix, [field], params))[0] as any; |
| 258 | } |
| 259 | async hmget< |
| 260 | DataPrefix_ extends DataPrefix, |
| 261 | DataField_ extends Extract< |
| 262 | keyof DataHashes_[DataPrefix_]['fields'], |
| 263 | string |
| 264 | > = Extract<keyof DataHashes_[DataPrefix_]['fields'], string>, |
| 265 | >( |
| 266 | prefix: DataPrefix_, |
| 267 | suffix: string, |
| 268 | fields: DataField_[], |
| 269 | params?: HMGetParams, |
| 270 | ): Promise<any[]> { |
| 271 | const dataHash = this.dataHashes[prefix]; |
| 272 | |
| 273 | const key = `${prefix}:${suffix}`; |
| 274 | |
| 275 | const fieldInfos: FieldInfo[] = fields.map((field) => ({ |
| 276 | name: field, |
| 277 | fullKey: `${key}>${field}`, |
| 278 | infos: dataHash?.fields[field], |
| 279 | })); |
| 280 | |
| 281 | const dtrx = params?.dtrx ?? new DataTransaction(params?.trx); |
| 282 | |
| 283 | await this._hmgetLocal({ |
| 284 | prefix, |
| 285 | suffix, |
| 286 | key, |
| 287 | |
| 288 | fields: fieldInfos, |
| 289 | remainingFields: fieldInfos, |
| 290 | |
| 291 | dataHash, |
| 292 | |
| 293 | ...params, |
| 294 | |
| 295 | dtrx, |
| 296 | trx: dtrx.trx, |
| 297 | }); |
| 298 | |
| 299 | // Reset remote cache TTLs |
| 300 | |
| 301 | this.addToTransaction(dtrx, () => { |
| 302 | for (const field of fieldInfos) { |
| 303 | void this.redis.expiremember(key, field.name, DEFAULT_REMOTE_TTL); |
| 304 | } |
| 305 | }); |
| 306 | |
| 307 | if (params?.dtrx == null) { |
| 308 | await dtrx.commit(); |
| 309 | } |
| 310 | |
| 311 | return fieldInfos.map((fieldInfo) => fieldInfo.value); |
| 312 | } |
| 313 | private async _hmgetLocal(params: HMGetInternalParams) { |
| 314 | const { remainingFields, suffix, dtrx } = params; |
| 315 |
no test coverage detected