# -*- mode: python -*-

Import("env")
env = env.Clone()

env.Library(
    target='serverless_types_idl',
    source=[
        'serverless_types.idl',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/server_base',
    ],
)

env.Library(
    target='shard_split_state_machine',
    source=[
        'shard_split_state_machine.idl',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/client/connection_string',
        '$BUILD_DIR/mongo/db/repl/tenant_migration_utils',
        '$BUILD_DIR/mongo/db/server_base',
    ],
)

env.Library(
    target='shard_split_commands',
    source=[
        'shard_split_commands.idl',
        'shard_split_commands.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/client/connection_string',
        '$BUILD_DIR/mongo/client/replica_set_monitor_server_parameters',
        '$BUILD_DIR/mongo/db/auth/auth',
        '$BUILD_DIR/mongo/db/global_settings',
        '$BUILD_DIR/mongo/db/repl/tenant_migration_utils',
        '$BUILD_DIR/mongo/db/server_base',
        'shard_split_donor_service',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/db/commands',
    ],
)

env.Library(
    target='shard_split_utils',
    source=[
        'shard_split_utils.cpp',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/db/concurrency/exception_util',
        '$BUILD_DIR/mongo/db/dbhelpers',
        '$BUILD_DIR/mongo/db/ops/write_ops',
        '$BUILD_DIR/mongo/db/repl/replica_set_messages',
        'shard_split_state_machine',
    ],
)

env.Library(
    target='serverless_lock',
    source=[
        'serverless_operation_lock_registry.cpp',
        'serverless_server_status.cpp',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/db/dbdirectclient',
        '$BUILD_DIR/mongo/db/repl/tenant_migration_state_machine_idl',
        '$BUILD_DIR/mongo/db/repl/tenant_migration_utils',
        '$BUILD_DIR/mongo/db/server_base',
        'shard_split_state_machine',
    ],
)

env.Library(
    target='shard_split_donor_service',
    source=[
        'shard_split_donor_service.cpp',
        'shard_split_donor_op_observer.cpp',
        'shard_split_statistics.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/repl/primary_only_service',
        'shard_split_state_machine',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/db/catalog/collection_crud',
        '$BUILD_DIR/mongo/db/catalog/local_oplog_info',
        '$BUILD_DIR/mongo/db/concurrency/exception_util',
        '$BUILD_DIR/mongo/db/dbhelpers',
        '$BUILD_DIR/mongo/db/index_builds_coordinator_interface',
        '$BUILD_DIR/mongo/db/repl/oplog',
        '$BUILD_DIR/mongo/db/repl/replica_set_messages',
        '$BUILD_DIR/mongo/db/repl/tenant_migration_access_blocker',
        '$BUILD_DIR/mongo/db/server_base',
        '$BUILD_DIR/mongo/db/shard_role',
        'serverless_lock',
        'shard_split_utils',
    ],
)

env.CppUnitTest(
    target='db_serverless_test',
    source=[
        'serverless_operation_lock_registry_test.cpp',
        'shard_split_donor_op_observer_test.cpp',
        'shard_split_donor_service_test.cpp',
        'shard_split_utils_test.cpp',
        'shard_split_test_utils.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/auth/authmocks',
        '$BUILD_DIR/mongo/db/catalog/catalog_helpers',
        '$BUILD_DIR/mongo/db/commands/create_command',
        '$BUILD_DIR/mongo/db/repl/primary_only_service_test_fixture',
        '$BUILD_DIR/mongo/db/repl/replmocks',
        '$BUILD_DIR/mongo/db/repl/tenant_migration_access_blocker',
        '$BUILD_DIR/mongo/dbtests/mocklib',
        'serverless_lock',
        'shard_split_donor_service',
        'shard_split_utils',
    ],
)
