# -*- 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_raii',
        '$BUILD_DIR/mongo/db/catalog/collection_options',
        '$BUILD_DIR/mongo/db/curop',
        '$BUILD_DIR/mongo/db/curop_metrics',
        '$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/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=[
        'write_ops_parsers.cpp',
        env.Idlc('write_ops.idl')[0],
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/db/commands/test_commands_enabled',
        '$BUILD_DIR/mongo/db/dbmessage',
        '$BUILD_DIR/mongo/db/pipeline/runtime_constants_idl',
        '$BUILD_DIR/mongo/db/query/hint_parser',
        '$BUILD_DIR/mongo/idl/idl_parser',
    ],
)

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',
    source='parsed_update.cpp',
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/db/update/update_driver',
    ],
)

env.CppUnitTest(
    target='db_ops_test',
    source=[
        '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/write_ops',
        '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',
    ],
)
