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

visibility = [ "//peridot/bin/cloud_provider_firestore/*" ]

source_set("firestore") {
  sources = [
    "encoding.cc",
    "encoding.h",
    "firestore_service.h",
    "firestore_service_impl.cc",
    "firestore_service_impl.h",
    "listen_call.cc",
    "listen_call.h",
    "listen_call_client.h",
  ]

  public_deps = [
    "//garnet/public/lib/callback",
    "//garnet/public/lib/fxl",
    "//peridot/bin/cloud_provider_firestore/grpc",
    "//peridot/bin/cloud_provider_firestore/include",
    "//peridot/lib/commit_pack",
    "//peridot/public/fidl/fuchsia.ledger.cloud",
    "//third_party/googleapis/google/firestore/v1beta1",
    "//third_party/googleapis/google/firestore/v1beta1:service",
    "//third_party/grpc:grpc++",
  ]

  deps = [
    "//peridot/lib/base64url",
    "//peridot/lib/convert",
  ]

  public_configs = [ "//third_party/googleapis:googleapis_config" ]
}

source_set("unittests") {
  testonly = true

  sources = [
    "encoding_unittest.cc",
    "listen_call_unittest.cc",
  ]

  deps = [
    ":firestore",
    "//garnet/public/lib/fidl/cpp",
    "//garnet/public/lib/fxl:fxl_printers",
    "//garnet/public/lib/gtest",
    "//peridot/bin/cloud_provider_firestore/firestore/testing",
    "//peridot/lib/convert",
    "//third_party/protobuf:protobuf_full",
  ]
}
