Spaces:
Paused
Paused
import pymongo | |
from info import DATABASE_URI, DATABASE_NAME | |
import logging | |
logger = logging.getLogger(__name__) | |
logger.setLevel(logging.ERROR) | |
myclient = pymongo.MongoClient(DATABASE_URI) | |
mydb = myclient[DATABASE_NAME] | |
mycol = mydb['CONNECTION'] | |
async def add_connection(group_id, user_id): | |
query = mycol.find_one( | |
{ "_id": user_id }, | |
{ "_id": 0, "active_group": 0 } | |
) | |
if query is not None: | |
group_ids = [x["group_id"] for x in query["group_details"]] | |
if group_id in group_ids: | |
return False | |
group_details = { | |
"group_id" : group_id | |
} | |
data = { | |
'_id': user_id, | |
'group_details' : [group_details], | |
'active_group' : group_id, | |
} | |
if mycol.count_documents( {"_id": user_id} ) == 0: | |
try: | |
mycol.insert_one(data) | |
return True | |
except: | |
logger.exception('Some error occurred!', exc_info=True) | |
else: | |
try: | |
mycol.update_one( | |
{'_id': user_id}, | |
{ | |
"$push": {"group_details": group_details}, | |
"$set": {"active_group" : group_id} | |
} | |
) | |
return True | |
except: | |
logger.exception('Some error occurred!', exc_info=True) | |
async def active_connection(user_id): | |
query = mycol.find_one( | |
{ "_id": user_id }, | |
{ "_id": 0, "group_details": 0 } | |
) | |
if not query: | |
return None | |
group_id = query['active_group'] | |
return int(group_id) if group_id != None else None | |
async def all_connections(user_id): | |
query = mycol.find_one( | |
{ "_id": user_id }, | |
{ "_id": 0, "active_group": 0 } | |
) | |
if query is not None: | |
return [x["group_id"] for x in query["group_details"]] | |
else: | |
return None | |
async def if_active(user_id, group_id): | |
query = mycol.find_one( | |
{ "_id": user_id }, | |
{ "_id": 0, "group_details": 0 } | |
) | |
return query is not None and query['active_group'] == group_id | |
async def make_active(user_id, group_id): | |
update = mycol.update_one( | |
{'_id': user_id}, | |
{"$set": {"active_group" : group_id}} | |
) | |
return update.modified_count != 0 | |
async def make_inactive(user_id): | |
update = mycol.update_one( | |
{'_id': user_id}, | |
{"$set": {"active_group" : None}} | |
) | |
return update.modified_count != 0 | |
async def delete_connection(user_id, group_id): | |
try: | |
update = mycol.update_one( | |
{"_id": user_id}, | |
{"$pull" : { "group_details" : {"group_id":group_id} } } | |
) | |
if update.modified_count == 0: | |
return False | |
query = mycol.find_one( | |
{ "_id": user_id }, | |
{ "_id": 0 } | |
) | |
if len(query["group_details"]) >= 1: | |
if query['active_group'] == group_id: | |
prvs_group_id = query["group_details"][len(query["group_details"]) - 1]["group_id"] | |
mycol.update_one( | |
{'_id': user_id}, | |
{"$set": {"active_group" : prvs_group_id}} | |
) | |
else: | |
mycol.update_one( | |
{'_id': user_id}, | |
{"$set": {"active_group" : None}} | |
) | |
return True | |
except Exception as e: | |
logger.exception(f'Some error occurred! {e}', exc_info=True) | |
return False | |