(
prefix: DataPrefix_,
suffix: string,
values: Record<DataField_, any>,
params?: HMSetParams,
)
| 694 | } |
| 695 | |
| 696 | async hmset< |
| 697 | DataPrefix_ extends DataPrefix, |
| 698 | DataField_ extends Extract< |
| 699 | keyof DataHashes_[DataPrefix_]['fields'], |
| 700 | string |
| 701 | > = Extract<keyof DataHashes_[DataPrefix_]['fields'], string>, |
| 702 | >( |
| 703 | prefix: DataPrefix_, |
| 704 | suffix: string, |
| 705 | values: Record<DataField_, any>, |
| 706 | params?: HMSetParams, |
| 707 | ) { |
| 708 | classLogger.sub('hmset').info(`${prefix}:${suffix}`); |
| 709 | |
| 710 | const dataHash = this.dataHashes[prefix]; |
| 711 | |
| 712 | const key = `${prefix}:${suffix}`; |
| 713 | |
| 714 | const fields: FieldInfo[] = Object.entries<any>(values).map( |
| 715 | ([field, value]) => ({ |
| 716 | name: field, |
| 717 | fullKey: `${key}>${field}`, |
| 718 | |
| 719 | infos: dataHash?.fields[field], |
| 720 | |
| 721 | value: value, |
| 722 | valueBuffer: Buffer.from(pack(value as any)), |
| 723 | }), |
| 724 | ); |
| 725 | |
| 726 | const dtrx = params?.dtrx ?? new DataTransaction(params?.trx); |
| 727 | |
| 728 | const internalParams = { |
| 729 | prefix, |
| 730 | suffix, |
| 731 | key, |
| 732 | |
| 733 | fields, |
| 734 | |
| 735 | dataHash, |
| 736 | |
| 737 | model: {}, |
| 738 | |
| 739 | ...params, |
| 740 | |
| 741 | dtrx, |
| 742 | trx: dtrx.trx, |
| 743 | }; |
| 744 | |
| 745 | await this._hmsetLocal(internalParams); |
| 746 | |
| 747 | // Publish data updates |
| 748 | |
| 749 | this.addToTransaction(dtrx, () => |
| 750 | Promise.allSettled( |
| 751 | fields.map((field) => { |
| 752 | if (!field.infos?.notifyUpdates) { |
| 753 | return; |
no test coverage detected