/**
 * Interface pro úložiště dat.
 * 
 * Aktuálně pouze "primitivní" has, get a set odrážející původní JSON DB.
 * Postupem času lze předělat pro efektivnější využití Redis.
 */
export interface StorageInterface {

    /**
     * Inicializuje úložiště, pokud je potřeba (např. připojení k databázi).
     */
    initialize?(): Promise<void>;

    /**
     * Vrátí příznak, zda existují data pro předaný klíč.
     * @param key klíč, pro který zjišťujeme data (typicky datum)
     */
    hasData(key: string): Promise<boolean>;

    /**
     * Vrátí veškerá data pro předaný klíč.
     * @param key klíč, pro který vrátit data (typicky datum)
     */
    getData<Type>(key: string): Promise<Type | undefined>;

    /**
     * Uloží data pod předaný klíč.
     * @param key klíč, pod kterým uložit data (typicky datum)
     * @param data data pro uložení
     */
    setData<Type>(key: string, data: Type): Promise<void>;
}