class User(newBase):
__tablename__ = 'user'
__table_args__ = {'autoload':True}
class Message(newBase):
__tablename__ = 'message'
__table_args__ = {'autoload':True}
class Lobby(newBase):
__tablename__ = 'lobby'
__table_args__ = {'autoload':True}
class Community(newBase):
__tablename__ = 'community'
__table_args__ = {'autoload':True}for table in tables:
for row in _yield_limit(olddb.query(table), table.frame):
logging.debug(row.frame)
messagedata = row.raw
message = wsrsi.sortframe(messagedata)
if message[0] == 'message':
message = message[1]
if message.iserased == True:
eraser = message.erasedby
eraserid = eraser.id
userInsert(eraser)
else:
eraser = None
eraserid = None
userInsert(message.author)
messageins = insert(Message).values(
id = message.id,
iserased = message.iserased,
erasedby = eraserid,
author = message.author.id,
body = message.body,
private = message.isprivate,
created = convTime(message.timecreated),
edited = convTime(message.timeedited),
lobby = message.lobbyid,
usermentions = message.mentions,
)
message_dict = {
c.name: c
for c in messageins.excluded
}
update_message = messageins.on_conflict_do_update(
index_elements = ["id"],
set_=message_dict
)
try:
newdb.execute(update_message)
except IntegrityError as e:
print('Foreign key violation error, logging.')
with open('fkerrors.txt', 'a+') as f:
f.write(str(e)+'\n')
f.write(str(message.raw))
f.write('\n================================\n')
f.close()
except ValueError as e:
if str(e) == 'A string literal cannot contain NUL (0x00) characters.':
print('Null character found in message')
with open('nullerrors.txt', 'a+') as f:
f.write(str(e)+'\n')
f.write(str(message.raw))
f.write('\n================================\n')
f.close@listens_for(Message, 'before_update')
def saveHistory(mapper, connect, target):
historicaldata = dict(target)
print("SaveHistory triggered\n")
event.listen(Message, 'before_insert', saveHistory)
event.listen(Message, 'before_update', saveHistory)[
{
"author": author,
"messagebody": messageBody,
"editedTimestamp": editedTimestamp,
}
]