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

#ifndef COMPONENTS_FEED_CORE_FEED_CONTENT_MUTATION_H_
#define COMPONENTS_FEED_CORE_FEED_CONTENT_MUTATION_H_

#include <list>
#include <string>

#include "base/macros.h"
#include "base/time/time.h"

namespace feed {

class ContentOperation;

// Native counterpart of ContentMutation.java.
// To commit a set of ContentOperation into FeedContentDatabase, user need to
// create a ContentMutation, next use Append* methods to append operations
// into the mutation, and then pass the ContentMutation to
// |FeedContentDatabase::CommitContentMutation| to commit operations.
class ContentMutation {
 public:
  ContentMutation();
  ~ContentMutation();

  void AppendDeleteOperation(std::string key);
  void AppendDeleteAllOperation();
  void AppendDeleteByPrefixOperation(std::string prefix);
  void AppendUpsertOperation(std::string key, std::string value);

  // Check if mutation has ContentOperation left.
  bool Empty();

  // Return the number of operations in the mutation.
  size_t Size() const;

  base::TimeTicks GetStartTime() const;

  // This will remove the first ContentOperation in |operations_list_| and
  // return it to caller.
  ContentOperation TakeFristOperation();

 private:
  std::list<ContentOperation> operations_list_;

  const base::TimeTicks start_time_;

  DISALLOW_COPY_AND_ASSIGN(ContentMutation);
};

}  // namespace feed

#endif  // COMPONENTS_FEED_CORE_FEED_CONTENT_MUTATION_H_
