File size: 2,044 Bytes
f2bab5e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""

Database views for CouchDB.

"""
from typing import Dict

# Views to be created in CouchDB for efficient querying

VIEWS: Dict[str, Dict] = {
    'agents': {
        '_design/agents': {
            'views': {
                'active': {
                    'map': '''function(doc) {

                        if (doc.status === 'active') {

                            emit(doc._id, doc);

                        }

                    }'''
                },
                'by_status': {
                    'map': '''function(doc) {

                        emit(doc.status, doc);

                    }'''
                }
            }
        }
    },
    'jobs': {
        '_design/jobs': {
            'views': {
                'pending': {
                    'map': '''function(doc) {

                        if (doc.status === 'pending') {

                            emit(doc._id, doc);

                        }

                    }'''
                },
                'by_agent': {
                    'map': '''function(doc) {

                        if (doc.assigned_to) {

                            emit(doc.assigned_to, doc);

                        }

                    }'''
                }
            }
        }
    },
    'gradients': {
        '_design/gradients': {
            'views': {
                'by_job': {
                    'map': '''function(doc) {

                        emit(doc.job_id, doc);

                    }'''
                },
                'by_timestamp': {
                    'map': '''function(doc) {

                        emit(doc.timestamp, doc);

                    }'''
                }
            }
        }
    },
    'model_state': {
        '_design/model_state': {
            'views': {
                'by_timestamp': {
                    'map': '''function(doc) {

                        emit(doc.timestamp, doc);

                    }'''
                }
            }
        }
    }
}