All files reset.js

11.11% Statements 2/18
0% Branches 0/2
0% Functions 0/4
11.11% Lines 2/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 40 41 42 43 44 45 46 47 48 49 50 51 52          1x                                     1x                                                      
import 'regenerator-runtime/runtime';
 
import { del } from './redisApi';
import redisAdapter from './adapter';
 
const disposeDatabase = async ({ metaName, lastTimestampKey }, client) => {
    const tempRepository = {
        metaName,
        lastTimestampKey,
        client
    };
 
    const adapter = await redisAdapter(tempRepository);
 
    const { meta } = tempRepository;
 
    const names = await meta.list();
    const promises = names.map(async (name) => {
        await adapter.del(name);
    });
    await Promise.all(promises);
    await Promise.all([await del(client, metaName), await del(client, lastTimestampKey)]);
};
 
const reset = (repository) => {
    if (repository.disposePromise) {
        return repository.disposePromise;
    }
 
    const { client, metaName, lastTimestampKey } = repository;
 
    const disposePromise = repository.connectionPromise.then(
        disposeDatabase.bind(
            null,
            {
                metaName,
                lastTimestampKey
            },
            client
        )
    );
 
    Object.keys(repository).forEach((key) => {
        delete repository[key];
    });
 
    repository.disposePromise = disposePromise;
    return disposePromise;
};
 
export default reset;