/* This file is part of Telegram Desktop, the official desktop application for the Telegram messaging service. For license and copyright information please follow this link: https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once #include "storage/cache/storage_cache_types.h" #include "base/basic_types.h" #include #include #include namespace Storage { class EncryptionKey; namespace Cache { namespace details { class DatabaseObject; } // namespace details class Database { public: using Settings = details::Settings; Database(const QString &path, const Settings &settings); void open(EncryptionKey key, FnMut done = nullptr); void close(FnMut done = nullptr); void put( const Key &key, QByteArray value, FnMut done = nullptr); void get(const Key &key, FnMut done); void remove(const Key &key, FnMut done = nullptr); void copy( const Key &from, const Key &to, FnMut done = nullptr); void move( const Key &from, const Key &to, FnMut done = nullptr); void clear(FnMut done = nullptr); ~Database(); private: using Implementation = details::DatabaseObject; crl::object_on_queue _wrapped; }; } // namespace Cache } // namespace Storage