68 lines
1.7 KiB
Python
68 lines
1.7 KiB
Python
import traceback
|
|
from datetime import datetime
|
|
from store.mongo import MongoStore
|
|
|
|
from config.helper import config
|
|
|
|
class Base:
|
|
|
|
instance = None
|
|
|
|
def set_payload(self, payload):
|
|
self.instance.ParseFromString(payload)
|
|
|
|
def extra_info(self):
|
|
return dict()
|
|
|
|
def user(self):
|
|
if(hasattr(self.instance, 'user')):
|
|
return self.instance.user
|
|
|
|
return None
|
|
|
|
def persists(self):
|
|
if config()['mongo']['enabled'] != 'on':
|
|
return
|
|
|
|
try:
|
|
store = MongoStore()
|
|
|
|
user = self.user()
|
|
if user is not None:
|
|
store.set_collection('user')
|
|
|
|
if not store.exists({'id': user.id}):
|
|
store.insert_one({
|
|
'id': user.id,
|
|
'shortId': user.shortId,
|
|
'nickname': user.nickname,
|
|
'gender': user.gender
|
|
})
|
|
|
|
store.set_collection(self.instance.common.method)
|
|
msg = {
|
|
"msgId": self.instance.common.msgId,
|
|
"roomId": self.instance.common.roomId,
|
|
'content': self.format_content(),
|
|
'created_at': datetime.today().replace(microsecond=0)
|
|
}
|
|
|
|
if user is not None:
|
|
msg.update({
|
|
'userId': user.id
|
|
})
|
|
|
|
if len(self.extra_info()):
|
|
msg.update(self.extra_info())
|
|
|
|
store.insert_one(msg)
|
|
except Exception as e:
|
|
print(self.instance.common.method + ' persists error')
|
|
print(traceback.format_exc())
|
|
finally:
|
|
store.close()
|
|
|
|
def __str__(self):
|
|
pass
|
|
|