Skip to content

Commit 8de6755

Browse files
authored
Merge pull request #11 from socobox/changes_upsert
upsert changes
2 parents 8b9fc45 + 63c7e55 commit 8de6755

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

sbxpy/__init__.py

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -522,8 +522,28 @@ async def run(self, key, params, url=None):
522522
return await resp.json()
523523

524524
async def upsert(self, model, data, let_null=False):
525-
query = self.query_builder_to_insert(data, let_null).set_model(model).compile()
526-
return await self.__then(query, self.is_update(data))
525+
update_list = [item for item in data if "_KEY" in item]
526+
insert_list = [item for item in data if "_KEY" not in item]
527+
merged_results = {"success": True}
528+
if update_list:
529+
query_update = self.query_builder_to_insert(update_list, let_null).set_model(model).compile()
530+
result_update = await self.__then(query_update, self.is_update(update_list))
531+
merged_results['success'] = merged_results['success'] and result_update.get("success",False)
532+
for k, v in result_update.items():
533+
if k != "success":
534+
merged_results[k]=v
535+
if insert_list:
536+
query_insert = self.query_builder_to_insert(insert_list, let_null).set_model(model).compile()
537+
result_insert= await self.__then(query_insert, False)
538+
merged_results['success'] = merged_results['success'] and result_insert.get("success",False)
539+
for k, v in result_insert.items():
540+
if k != "success":
541+
if k in merged_results and isinstance(v,list):
542+
merged_results[k].extend(v)
543+
else:
544+
merged_results[k]=v
545+
return merged_results
546+
527547

528548
async def __then(self, query_compiled, update):
529549
async with aiohttp.ClientSession() as session:

test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,4 +68,4 @@ async def main(sci):
6868

6969
#sc.loginCallback(os.environ['LOGIN'], os.environ['PASSWORD'], os.environ['DOMAIN'],callback)
7070

71-
#loop.run_forever()
71+
#loop.run_forever()

0 commit comments

Comments
 (0)