File size: 2,415 Bytes
4b677a1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
from aworld.replay_buffer.query_filter import QueryBuilder
from aworld.logs.util import logger


def example():
    '''
    expression: task_id = "123"
    return :
        {
            'field': 'task_id',
            'value': '123',
            'op': 'eq'
        }
    '''
    qb = QueryBuilder()
    query = qb.eq("task_id", "123").build()
    logger.info(query)


def example1():
    '''
    expression: (task_id = "123" and agent_id = "111") or (task_id = "456" and agent_id = "222")
    return : 
        {
            'or_': [{
                'and_': [{
                    'field': 'task_id',
                    'value': '123',
                    'op': 'eq'
                }, {
                    'field': 'agent_id',
                    'value': '111',
                    'op': 'eq'
                }]
            }, {
                'and_': [{
                    'field': 'task_id',
                    'value': '456',
                    'op': 'eq'
                }, {
                    'field': 'agent_id',
                    'value': '222',
                    'op': 'eq'
                }]
            }]
        }
    '''
    qb = QueryBuilder()
    query = (qb.eq("task_id", "123")
             .and_()
             .eq("agent_id", "111")
             .or_()
             .nested(QueryBuilder()
                     .eq("task_id", "456")
                     .and_()
                     .eq("agent_id", "222"))
             .build())
    logger.info(query)


def example2():
    '''
    expression: task_id = "123" and (agent_id = "111" or agent_id = "222")
    return :
        {
            'and_': [{
                'field': 'task_id',
                'value': '123',
                'op': 'eq'
            }, {
                'or_': [{
                    'field': 'agent_id',
                    'value': '111',
                    'op': 'eq'
                }, {
                    'field': 'agent_id',
                    'value': '222',
                    'op': 'eq'
                }
            }
        }   
    '''
    qb = QueryBuilder()
    query = (qb.eq("task_id", "123")
             .and_()
             .nested(QueryBuilder()
                     .eq("agent_id", "111")
                     .or_()
                     .eq("agent_id", "222"))
             .build())
    logger.info(query)

if __name__ == "__main__":
    example()
    example1()
    example2()