MCPcopy Create free account
hub / github.com/DeepNotesApp/DeepNotes / hmget

Method hmget

packages/@stdlib/data/src/data-abstraction.ts:259–312  ·  view source on GitHub ↗
(
    prefix: DataPrefix_,
    suffix: string,
    fields: DataField_[],
    params?: HMGetParams,
  )

Source from the content-addressed store, hash-verified

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

Callers 1

hgetMethod · 0.95

Calls 4

_hmgetLocalMethod · 0.95
addToTransactionMethod · 0.95
expirememberMethod · 0.80
commitMethod · 0.80

Tested by

no test coverage detected