# -*- mode: python -*-

Import("env")

env = env.Clone()

env.SConscript(
    dirs=[
        "document_value",
        "sbe",
    ],
    exports=[
        "env",
    ],
)

# WorkingSet target and associated test
env.Library(
    target="working_set",
    source=[
        "working_set.cpp",
    ],
    LIBDEPS=[
        "$BUILD_DIR/mongo/base",
        "$BUILD_DIR/mongo/db/bson/dotted_path_support",
        "$BUILD_DIR/mongo/db/service_context",
        "document_value/document_value",
    ],
)

env.Library(
    target="scoped_timer",
    source=[
        "scoped_timer.cpp",
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/service_context',
        '$BUILD_DIR/mongo/util/net/network',
    ],
)

env.Library(
    target='js_function',
    source=[
        'js_function.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/auth/auth',
        '$BUILD_DIR/mongo/db/query/query_knobs',
        '$BUILD_DIR/mongo/db/service_context',
        '$BUILD_DIR/mongo/scripting/scripting_common',
    ],
)

env.Library(
    target="bucket_unpacker",
    source=[
        "bucket_level_id_predicate_generator.cpp",
        "bucket_unpacker.cpp",
    ],
    LIBDEPS=[
        "$BUILD_DIR/mongo/db/query_expressions",
        "document_value/document_value",
    ],
    LIBDEPS_PRIVATE=[
        "$BUILD_DIR/mongo/bson/util/bson_column",
        "$BUILD_DIR/mongo/db/timeseries/timeseries_options",
    ],
)

sortExecutorEnv = env.Clone()
sortExecutorEnv.InjectThirdParty(libraries=['snappy'])
sortExecutorEnv.Library(
    target="sort_executor",
    source=[
        "sort_executor.cpp",
        "sort_key_comparator.cpp",
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/query/sort_pattern',
        '$BUILD_DIR/mongo/db/storage/encryption_hooks',
        '$BUILD_DIR/mongo/db/storage/storage_options',
        '$BUILD_DIR/mongo/s/is_mongos',
        '$BUILD_DIR/third_party/shim_snappy',
        'working_set',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/db/query/spill_util',
        '$BUILD_DIR/mongo/db/sorter/sorter_idl',
        '$BUILD_DIR/mongo/db/sorter/sorter_stats',
    ],
)

env.Library(
    target='projection_executor',
    source=[
        'add_fields_projection_executor.cpp',
        'exclusion_projection_executor.cpp',
        'inclusion_projection_executor.cpp',
        'projection_executor_builder.cpp',
        'projection_executor_utils.cpp',
        'projection_node.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/query_expressions',
    ],
)

env.Library(
    target='stagedebug_cmd',
    source=[
        'stagedebug_cmd.cpp',
    ],
    LIBDEPS=[
        "$BUILD_DIR/mongo/db/index/index_access_method",
        "$BUILD_DIR/mongo/db/query_exec",
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/db/commands/test_commands_enabled',
    ],
)

env.CppUnitTest(
    target='db_exec_test',
    source=[
        "document_value/document_comparator_test.cpp",
        "document_value/document_metadata_fields_test.cpp",
        "document_value/document_value_test.cpp",
        "document_value/document_value_test_util_self_test.cpp",
        "document_value/value_comparator_test.cpp",
        "add_fields_projection_executor_test.cpp",
        "exclusion_projection_executor_test.cpp",
        "find_projection_executor_test.cpp",
        "inclusion_projection_executor_test.cpp",
        "projection_executor_builder_test.cpp",
        "projection_executor_redaction_test.cpp",
        "projection_executor_test.cpp",
        "projection_executor_utils_test.cpp",
        "projection_executor_wildcard_access_test.cpp",
        "queued_data_stage_test.cpp",
        "sort_test.cpp",
        "working_set_test.cpp",
        "bucket_unpacker_test.cpp",
        "spool_test.cpp",
    ],
    LIBDEPS=[
        "$BUILD_DIR/mongo/base",
        "$BUILD_DIR/mongo/bson/util/bson_column",
        "$BUILD_DIR/mongo/db/auth/authmocks",
        "$BUILD_DIR/mongo/db/query/collation/collator_factory_mock",
        "$BUILD_DIR/mongo/db/query/collation/collator_interface_mock",
        "$BUILD_DIR/mongo/db/query/query_test_service_context",
        "$BUILD_DIR/mongo/db/query_exec",
        "$BUILD_DIR/mongo/db/record_id_helpers",
        "$BUILD_DIR/mongo/db/service_context_d_test_fixture",
        "$BUILD_DIR/mongo/db/timeseries/bucket_compression",
        "$BUILD_DIR/mongo/dbtests/mocklib",
        "$BUILD_DIR/mongo/util/clock_source_mock",
        "document_value/document_value",
        "document_value/document_value_test_util",
        "projection_executor",
        "working_set",
    ],
)
