# -*- mode: python -*-

Import("env")

env = env.Clone()

env.Library(
    target='write_ops_exec',
    source=[
        'write_ops_exec.cpp',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/db/catalog/catalog_helpers',
        '$BUILD_DIR/mongo/db/catalog/collection_options',
        '$BUILD_DIR/mongo/db/catalog_raii',
        '$BUILD_DIR/mongo/db/concurrency/exception_util',
        '$BUILD_DIR/mongo/db/curop',
        '$BUILD_DIR/mongo/db/curop_metrics',
        '$BUILD_DIR/mongo/db/dbhelpers',
        '$BUILD_DIR/mongo/db/record_id_helpers',
        '$BUILD_DIR/mongo/db/repl/oplog',
        '$BUILD_DIR/mongo/db/repl/repl_coordinator_interface',
        '$BUILD_DIR/mongo/db/stats/counters',
        '$BUILD_DIR/mongo/db/stats/server_read_concern_write_concern_metrics',
        '$BUILD_DIR/mongo/db/timeseries/timeseries_conversion_util',
        '$BUILD_DIR/mongo/db/transaction',
        '$BUILD_DIR/mongo/db/write_ops',
        '$BUILD_DIR/mongo/util/fail_point',
        '$BUILD_DIR/mongo/util/log_and_backoff',
    ],
)

env.Library(
    target='write_ops_parsers',
    source=[
        'new_write_error_exception_format_feature_flag.idl',
        'write_ops.cpp',
        'write_ops.idl',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/db/auth/authprivilege',
        '$BUILD_DIR/mongo/db/dbmessage',
        '$BUILD_DIR/mongo/db/pipeline/runtime_constants_idl',
        '$BUILD_DIR/mongo/db/query/hint_parser',
        '$BUILD_DIR/mongo/db/repl/optime',
        '$BUILD_DIR/mongo/idl/idl_parser',
        '$BUILD_DIR/mongo/rpc/command_status',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/crypto/encrypted_field_config',
        '$BUILD_DIR/mongo/crypto/fle_fields',
    ],
)

env.Library(
    target='write_ops_parsers_test_helpers',
    source=[
        'write_ops_parsers_test_helpers.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/db/dbmessage',
    ],
)

env.Library(
    target='parsed_update_array_filters',
    source='parsed_update_array_filters.cpp',
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/db/matcher/expressions',
    ],
)

env.Library(
    target='parsed_update',
    source='parsed_update.cpp',
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/update/update_driver',
        'parsed_update_array_filters'
    ],
)

env.CppUnitTest(
    target='db_ops_test',
    source=[
        'write_ops_exec_test.cpp',
        'write_ops_parsers_test.cpp',
        'write_ops_retryability_test.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/auth/authmocks',
        '$BUILD_DIR/mongo/db/query_exec',
        '$BUILD_DIR/mongo/db/repl/mock_repl_coord_server_fixture',
        '$BUILD_DIR/mongo/db/repl/oplog_entry',
        '$BUILD_DIR/mongo/db/transaction',
        '$BUILD_DIR/mongo/db/write_ops',
        'write_ops_exec',
        'write_ops_parsers',
        'write_ops_parsers_test_helpers',
    ],
)

env.CppIntegrationTest(
    target='db_ops_integration_test',
    source='write_ops_document_stream_integration_test.cpp',
    LIBDEPS=[
        '$BUILD_DIR/mongo/client/clientdriver_network',
        '$BUILD_DIR/mongo/transport/transport_layer_egress_init',
        '$BUILD_DIR/mongo/util/version_impl',
    ],
)
