All files / lib/commands HSET.ts

15.79% Statements 3/19
0% Branches 0/10
0% Functions 0/4
16.67% Lines 3/18

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 481x           1x                                                                               1x  
import { transformReplyString } from './generic-transformers';
 
type HSETObject = Record<string | number, string | number>;
 
type HSETMap = Map<string | number, string | number>;
 
export function transformArguments(key: string, objectOrMap: HSETObject | HSETMap): Array<string> {
    const flattenArgs = mapArgumentTransformer(key, objectOrMap) ??
        objectArgumentTransformer(key, objectOrMap) ??
        [];
 
    // TODO: add support for tuples
 
    flattenArgs.unshift('HSET');
 
    return flattenArgs;
}
 
function mapArgumentTransformer(key: string, map: HSETMap | unknown): Array<string> | undefined {
    if (!(map instanceof Map)) return;
 
    const flat = [key];
    for (const [key, value] of map.entries()) {
        flat.push(key.toString(), value.toString());
    }
 
    return flat;
}
 
function isObject(obj: HSETObject | unknown): obj is HSETObject {
    return typeof obj === 'object' && obj !== null && !Array.isArray(obj);
}
 
function objectArgumentTransformer(key: string, obj: HSETObject | unknown): Array<string> | undefined {
    if (!isObject(obj)) {
        return;
    }
 
    const flat = [key];
    for (const key of Object.keys(obj)) {
        flat.push(key.toString(), obj[key].toString());
    }
 
    return flat;
}
 
export const transformReply = transformReplyString;