// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "content/browser/indexed_db/scopes/leveldb_scopes_factory.h"

#include <utility>

#include "content/browser/indexed_db/scopes/leveldb_scopes.h"

namespace content {

LevelDBScopesOptions::LevelDBScopesOptions() = default;
LevelDBScopesOptions::~LevelDBScopesOptions() = default;
LevelDBScopesOptions::LevelDBScopesOptions(LevelDBScopesOptions&&) noexcept =
    default;
LevelDBScopesOptions& LevelDBScopesOptions::operator=(
    LevelDBScopesOptions&&) noexcept = default;

std::tuple<std::unique_ptr<LevelDBScopes>, leveldb::Status>
DefaultLevelDBScopesFactory::CreateAndInitializeLevelDBScopes(
    LevelDBScopesOptions options,
    scoped_refptr<LevelDBState> level_db) {
  std::unique_ptr<LevelDBScopes> scopes = std::make_unique<LevelDBScopes>(
      std::move(options.metadata_key_prefix), options.max_write_batch_size,
      std::move(level_db), options.lock_manager,
      std::move(options.failure_callback));
  leveldb::Status s = scopes->Initialize();
  return {s.ok() ? std::move(scopes) : nullptr, s};
}

}  // namespace content
