chromium/components/sqlite_proto/proto_table_manager.h

// 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_