created chat table structure and added messagetypes

This commit is contained in:
navjot 2020-05-02 14:38:30 +05:30
parent 0fca124cd8
commit f04829eca0
No known key found for this signature in database
GPG Key ID: 9EE70AFD71357F1C
4 changed files with 74 additions and 1 deletions

View File

@ -392,6 +392,22 @@ class sqlThread(threading.Thread):
' and removing the hash field.') ' and removing the hash field.')
self.cur.execute('''update settings set value=10 WHERE key='version';''') self.cur.execute('''update settings set value=10 WHERE key='version';''')
# Add a new table: chat and chatdata for storing chating conversation
item = '''SELECT value FROM settings WHERE key='version';'''
parameters = ''
self.cur.execute(item, parameters)
currentVersion = int(self.cur.fetchall()[0][0])
if currentVersion == 10:
self.cur.execute('''DROP TABLE chat''')
self.cur.execute(
'''CREATE TABLE chat'''
''' (msgid blob, senderaddress text, receiveraddress text, message text,'''
''' senttime text, receivedtime text, image blob, audio blob, reference blob,'''
''' UNIQUE(msgid) ON CONFLICT REPLACE)''')
item = '''update settings set value=? WHERE key='version';'''
parameters = (11,)
self.cur.execute(item, parameters)
# Are you hoping to add a new option to the keys.dat file of existing # Are you hoping to add a new option to the keys.dat file of existing
# Bitmessage users or modify the SQLite database? Add it right # Bitmessage users or modify the SQLite database? Add it right
# above this line! # above this line!

View File

@ -20,7 +20,7 @@ class MsgBase(object): # pylint: disable=too-few-public-methods
def constructObject(data): def constructObject(data):
"""Constructing an object""" """Constructing an object"""
whitelist = ["message"] whitelist = ["message", "chatmsg"]
if data[""] not in whitelist: if data[""] not in whitelist:
return None return None
try: try:

View File

@ -0,0 +1,34 @@
import logging
from messagetypes import MsgBase
# pylint: disable=attribute-defined-outside-init
logger = logging.getLogger('default')
class Chatmsg(MsgBase):
"""Encapsulate a chatmsg"""
# pylint: disable=attribute-defined-outside-init
def decode(self, data):
"""Decode a message"""
# UTF-8 and variable type validator
if isinstance(data["message"], str):
# Unicode is depreciated
self.message = data["message"]
else:
# Unicode is depreciated
self.message = str(data["message"])
def encode(self, data):
"""Encode a message"""
super(Chatmsg, self).__init__()
try:
self.data["message"] = data["message"]
except KeyError as e:
logger.error("Missing key %s", e)
return self.data
def process(self):
"""Process a message"""
logger.debug("Message: %i bytes", len(self.message))

23
src/tests/test_chatmsg.py Normal file
View File

@ -0,0 +1,23 @@
"""
Test for chatmsg group
"""
import unittest
from messagetypes.chatmsg import Chatmsg
class TestCharMessage(unittest.TestCase):
"""
Test case for chat message group
"""
def test_decode(self):
"""Test various types of decode method"""
chat_obj = Chatmsg()
import messagetypes
result = messagetypes.constructObject({'': 'chatmsg', 'message': 'hello world'})
self.assertTrue(isinstance(result.message, str))
def test_encode(self):
chat_obj = Chatmsg()
result = chat_obj.encode({'message':'hello world'})
self.assertTrue(True if result['message'] else False)