All files meta.js

88.89% Statements 16/18
50% Branches 1/2
75% Functions 6/8
88.89% Lines 16/18
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    1x   1x 12x 12x     1x 1x 1x     1x 3x   1x       1x 3x 3x       3x   3x     13x            
import { hget, hdel, hset, hkeys } from './redisApi';
 
const DEFAULT_META = {};
 
const create = async ({ client, metaName, lastTimestampKey }, cache, newName) => {
    await hset(client, metaName, newName, DEFAULT_META);
    cache[newName] = true;
};
 
const del = async ({ client, metaName, lastTimestampKey }, cache, key) => {
    await hdel(client, metaName, key);
    delete cache[key];
};
 
const getLastTimestamp = async ({ client, metaName, lastTimestampKey }) =>
    await hget(client, metaName, lastTimestampKey);
 
const setLastTimestamp = async ({ client, metaName, lastTimestampKey }, lastTimestamp) => {
    await hset(client, metaName, lastTimestampKey, lastTimestamp);
};
 
const getKeys = async ({ client, metaName }) => {
    const result = await hkeys(client, metaName);
    return result ? result : {};
};
 
export default async (repository) => {
    const cache = await getKeys(repository);
 
    return Object.freeze({
        create: create.bind(null, repository, cache),
        del: del.bind(null, repository, cache),
        exists: async name => !!cache[name],
        getLastTimestamp: getLastTimestamp.bind(null, repository),
        setLastTimestamp: setLastTimestamp.bind(null, repository),
        list: async () => Object.keys(cache)
    });
};