import { StorageInterface } from "./StorageInterface";

const store = new Map<string, unknown>();

/** Vymaže všechna data z in-memory úložiště. Slouží k resetu mezi testy. */
export function resetMemoryStorage(): void {
    store.clear();
}

/**
 * In-memory implementace úložiště. Používá se výhradně v testovacím prostředí.
 */
export default class MemoryStorage implements StorageInterface {

    hasData(key: string): Promise<boolean> {
        return Promise.resolve(store.has(key));
    }

    getData<Type>(key: string): Promise<Type | undefined> {
        return Promise.resolve(store.get(key) as Type | undefined);
    }

    setData<Type>(key: string, data: Type): Promise<void> {
        store.set(key, data);
        return Promise.resolve();
    }
}
