load(
    "@rules_rust//rust:defs.bzl",
    "rust_library",
)
load(
    "//common:multiplatform_testing.bzl",
    "multiplatform_rust_test",
)

licenses(["notice"])

rust_library(
    name = "database",
    srcs = [
        "code_snippet.rs",
        "db.rs",
        "function_types.rs",
        "lib.rs",
        "rs_snippet.rs",
    ],
    visibility = [
        "//rs_bindings_from_cc:__subpackages__",
    ],
    deps = [
        "//common:arc_anyhow",
        "//common:code_gen_utils",
        "//common:crubit_abi_type",
        "//common:crubit_feature",
        "//common:error_report",
        "//common:errors",
        "//common:ffi_types",
        "//common:memoized",
        "//common:token_stream_printer",
        "//rs_bindings_from_cc:ir",
        "@crate_index//:flagset",  # v0_4
        "@crate_index//:heck",  # v0_5
        "@crate_index//:itertools",  # v0_13
        "@crate_index//:proc-macro2",
        "@crate_index//:quote",  # v1
        "@crate_index//:serde_json",  # v1
        "@crate_index//:syn",  # v1
    ],
)

multiplatform_rust_test(
    name = "database_test",
    crate = ":database",
    tags = [
        "not_run:arm",
        "not_run:mac",
    ],
    deps = [
        "//common:multiplatform_testing",
        "//common:token_stream_matchers",
        "//rs_bindings_from_cc:ir_matchers",
        "//rs_bindings_from_cc:ir_rust_proto",
        "@crate_index//:googletest",
        "@protobuf//rust:protobuf",
    ],
)
