Skip to content

Utils

make_request(data_dict) ΒΆ

Given an action data dict, creates a SearchRequest object for it.

Parameters:

Name Type Description Default
data_dict dict

the action data dict

required

Returns:

Type Description
SearchRequest

a SearchRequest object

Source code in ckanext/versioned_datastore/logic/multi/utils.py
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
def make_request(data_dict: dict) -> SearchRequest:
    """
    Given an action data dict, creates a SearchRequest object for it.

    :param data_dict: the action data dict
    :returns: a SearchRequest object
    """
    # if no resource IDs are provided, default to all resources available to the user
    resource_ids = data_dict.get('resource_ids', [])
    if not resource_ids:
        resource_ids = list(get_available_datastore_resources())

    query = SchemaQuery(
        resource_ids,
        data_dict.get('version'),
        data_dict.get('query'),
        data_dict.get('query_version'),
    )

    # check the query is valid before we go any further
    try:
        query.validate()
    except ValidationError as e:
        raise toolkit.ValidationError(e.message)

    request = SearchRequest(
        query,
        size=data_dict.get('size'),
        after=data_dict.get('after'),
        data_dict=data_dict,
    )

    # ignore any resources that are unavailable for whatever reason
    request.add_param('ignore_unavailable', True)

    return request