File: results.py

package info (click to toggle)
python-mongomock 4.3.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,024 kB
  • sloc: python: 16,412; makefile: 24
file content (120 lines) | stat: -rw-r--r-- 3,591 bytes parent folder | download | duplicates (2)
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
try:
    from pymongo.results import BulkWriteResult  # pylint: disable=unused-import
    from pymongo.results import DeleteResult  # pylint: disable=unused-import
    from pymongo.results import InsertManyResult  # pylint: disable=unused-import
    from pymongo.results import InsertOneResult  # pylint: disable=unused-import
    from pymongo.results import UpdateResult  # pylint: disable=unused-import
except ImportError:
    class _WriteResult:

        def __init__(self, acknowledged=True):
            self.__acknowledged = acknowledged

        @property
        def acknowledged(self):
            return self.__acknowledged

    class InsertOneResult(_WriteResult):

        __slots__ = ('__inserted_id', '__acknowledged')

        def __init__(self, inserted_id, acknowledged=True):
            self.__inserted_id = inserted_id
            super().__init__(acknowledged)

        @property
        def inserted_id(self):
            return self.__inserted_id

    class InsertManyResult(_WriteResult):

        __slots__ = ('__inserted_ids', '__acknowledged')

        def __init__(self, inserted_ids, acknowledged=True):
            self.__inserted_ids = inserted_ids
            super().__init__(acknowledged)

        @property
        def inserted_ids(self):
            return self.__inserted_ids

    class UpdateResult(_WriteResult):

        __slots__ = ('__raw_result', '__acknowledged')

        def __init__(self, raw_result, acknowledged=True):
            self.__raw_result = raw_result
            super().__init__(acknowledged)

        @property
        def raw_result(self):
            return self.__raw_result

        @property
        def matched_count(self):
            if self.upserted_id is not None:
                return 0
            return self.__raw_result.get('n', 0)

        @property
        def modified_count(self):
            return self.__raw_result.get('nModified')

        @property
        def upserted_id(self):
            return self.__raw_result.get('upserted')

    class DeleteResult(_WriteResult):

        __slots__ = ('__raw_result', '__acknowledged')

        def __init__(self, raw_result, acknowledged=True):
            self.__raw_result = raw_result
            super().__init__(acknowledged)

        @property
        def raw_result(self):
            return self.__raw_result

        @property
        def deleted_count(self):
            return self.__raw_result.get('n', 0)

    class BulkWriteResult(_WriteResult):

        __slots__ = ('__bulk_api_result', '__acknowledged')

        def __init__(self, bulk_api_result, acknowledged):
            self.__bulk_api_result = bulk_api_result
            super().__init__(acknowledged)

        @property
        def bulk_api_result(self):
            return self.__bulk_api_result

        @property
        def inserted_count(self):
            return self.__bulk_api_result.get('nInserted')

        @property
        def matched_count(self):
            return self.__bulk_api_result.get('nMatched')

        @property
        def modified_count(self):
            return self.__bulk_api_result.get('nModified')

        @property
        def deleted_count(self):
            return self.__bulk_api_result.get('nRemoved')

        @property
        def upserted_count(self):
            return self.__bulk_api_result.get('nUpserted')

        @property
        def upserted_ids(self):
            if self.__bulk_api_result:
                return {
                    upsert['index']: upsert['_id'] for upsert in self.bulk_api_result['upserted']
                }