// Copyright 2020 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_SQLITE_PROTO_PROTO_TABLE_MANAGER_H_ #define COMPONENTS_SQLITE_PROTO_PROTO_TABLE_MANAGER_H_ #include <string> #include <vector> #include "base/component_export.h" #include "base/containers/span.h" #include "base/memory/scoped_refptr.h" #include "base/task/sequenced_task_runner.h" #include "components/sqlite_proto/table_manager.h" namespace sqlite_proto { // ProtoTableManager is the instance of TableManager intended to be used // in the common case of storing string-to-proto tables (alongside // KeyValueData<T> and KeyValueTable<T>). // // End-to-end use: // 1. Initialize a database with sql::Database::Open. // 2. Initialize a ProtoTableManager on top of this database. // 3. For each table, construct a pair of KeyValueTable and KeyValueData // on the main sequence; initialize the KeyValueData on the database sequence. // 4. Now, initialization is finished and the KeyValueData objects can be // used (on the main thread) for get/put/delete operations against the database. // // TODO(crbug.com/40671040): This interface is a bit complex and could do with // a refactor. class ProtoTableManager : public TableManager { … }; } // namespace sqlite_proto #endif // COMPONENTS_SQLITE_PROTO_PROTO_TABLE_MANAGER_H_