Skip to content

Commit 46c082d

Browse files
author
Jongmin Kim
committed
feat: add return_type to stat and analyze query
Signed-off-by: Jongmin Kim <[email protected]>
1 parent 5c51c24 commit 46c082d

File tree

1 file changed

+20
-8
lines changed

1 file changed

+20
-8
lines changed

src/spaceone/core/model/mongo_model/__init__.py

+20-8
Original file line numberDiff line numberDiff line change
@@ -1119,7 +1119,7 @@ def _make_aggregate_rules(cls, aggregate):
11191119
return _aggregate_rules
11201120

11211121
@classmethod
1122-
def _stat_aggregate(cls, vos, aggregate, page, allow_disk_use):
1122+
def _stat_aggregate(cls, vos, aggregate, page, allow_disk_use, return_type):
11231123
result = {}
11241124
pipeline = []
11251125
_aggregate_rules = cls._make_aggregate_rules(aggregate)
@@ -1148,8 +1148,12 @@ def _stat_aggregate(cls, vos, aggregate, page, allow_disk_use):
11481148
cursor = vos.aggregate(pipeline, allowDiskUse=True)
11491149
else:
11501150
cursor = vos.aggregate(pipeline)
1151-
result["results"] = cls._make_aggregate_values(cursor)
1152-
return result
1151+
1152+
if return_type == "cursor":
1153+
return cursor
1154+
else:
1155+
result["results"] = cls._make_aggregate_values(cursor)
1156+
return result
11531157

11541158
@classmethod
11551159
def _stat_distinct(cls, vos, distinct, page):
@@ -1184,6 +1188,7 @@ def stat(
11841188
reference_filter=None,
11851189
target="SECONDARY_PREFERRED",
11861190
allow_disk_use=False,
1191+
return_type="dict",
11871192
**kwargs,
11881193
):
11891194
filter = filter or []
@@ -1199,7 +1204,9 @@ def stat(
11991204
vos = cls._get_target_objects(target).filter(_filter)
12001205

12011206
if aggregate:
1202-
return cls._stat_aggregate(vos, aggregate, page, allow_disk_use)
1207+
return cls._stat_aggregate(
1208+
vos, aggregate, page, allow_disk_use, return_type
1209+
)
12031210

12041211
elif distinct:
12051212
return cls._stat_distinct(vos, distinct, page)
@@ -1499,6 +1506,7 @@ def analyze(
14991506
reference_filter=None,
15001507
target="SECONDARY_PREFERRED",
15011508
allow_disk_use=False,
1509+
return_type="dict",
15021510
**kwargs,
15031511
):
15041512
if fields is None:
@@ -1540,6 +1548,7 @@ def analyze(
15401548
"aggregate": aggregate,
15411549
"target": target,
15421550
"allow_disk_use": allow_disk_use,
1551+
"return_type": return_type,
15431552
"reference_filter": reference_filter,
15441553
}
15451554

@@ -1561,8 +1570,11 @@ def analyze(
15611570

15621571
response = cls.stat(**query)
15631572

1564-
if page_limit:
1565-
response["more"] = len(response["results"]) > page_limit
1566-
response["results"] = response["results"][:page_limit]
1573+
if return_type == "cursor":
1574+
return response
1575+
else:
1576+
if page_limit:
1577+
response["more"] = len(response["results"]) > page_limit
1578+
response["results"] = response["results"][:page_limit]
15671579

1568-
return response
1580+
return response

0 commit comments

Comments
 (0)