Just some cleanup code and deleting messages from queue

This commit is contained in:
Frisk 2020-11-09 02:22:31 +01:00
parent 9bc01153f8
commit baa8eeead9
No known key found for this signature in database
GPG key ID: 213F7C15068AF8AC
4 changed files with 37 additions and 4 deletions

View file

@ -9,7 +9,7 @@ import requests
from src.configloader import settings
from src.discord.message import DiscordMessage, DiscordMessageMetadata
AUTO_SUPPRESSION_ENABLED = settings.get("auto_suppression", {"enabled": True}).get("enabled")
AUTO_SUPPRESSION_ENABLED = settings.get("auto_suppression", {"enabled": False}).get("enabled")
if AUTO_SUPPRESSION_ENABLED:
from src.fileio.database import add_entry as add_message_redaction_entry
@ -40,6 +40,21 @@ class MessageQueue:
def cut_messages(self, item_num):
self._queue = self._queue[item_num:]
@staticmethod
def compare_message_to_dict(metadata: DiscordMessageMetadata, to_match: dict):
"""Compare DiscordMessageMetadata fields and match them against dictionary"""
for name, val in to_match.items():
if getattr(metadata, name, None) != val:
return False
return True
def delete_all_with_matching_metadata(self, **properties):
"""Deletes all of the messages that have matching metadata properties (useful for message redaction)"""
for message in messagequeue:
if self.compare_message_to_dict(message[1], properties):
# TODO Delete messages from the queue
raise NotImplemented
def resend_msgs(self):
if self._queue:
logger.info(

View file

@ -2,7 +2,7 @@ import logging
from src.configloader import settings
from src.discord.message import DiscordMessageMetadata
from src.discord.queue import send_to_discord
from src.discord.queue import send_to_discord, messagequeue
from src.fileio.database import db_cursor, db_connection
logger = logging.getLogger("rcgcdw.discord.redaction")
@ -12,6 +12,8 @@ def delete_messages(pageid: int):
"""Delete messages that match that pageid"""
logger.debug(type(pageid))
to_delete = db_cursor.execute("SELECT msg_id FROM event WHERE pageid = ?", (pageid,))
if len(messagequeue) > 0:
messagequeue.delete_all_with_matching_metadata(pageid=pageid)
msg_to_remove = []
logger.debug("Deleting messages for pageid: {}".format(pageid))
for message in to_delete:

View file

@ -11,13 +11,15 @@ def create_schema():
"""BEGIN TRANSACTION;
CREATE TABLE IF NOT EXISTS "messages" (
"message_id" TEXT,
"content" TEXT
"content" TEXT,
PRIMARY KEY("message_id")
);
CREATE TABLE IF NOT EXISTS "event" (
"pageid" INTEGER,
"revid" INTEGER,
"logid" INTEGER,
"msg_id" TEXT NOT NULL,
PRIMARY KEY("msg_id"),
FOREIGN KEY("msg_id") REFERENCES "messages"("message_id") ON DELETE CASCADE
);
COMMIT;""")
@ -47,5 +49,16 @@ def add_entry(pageid: int, revid: int, logid: int, message):
logger.debug("Adding an entry to the database (pageid: {}, revid: {}, logid: {}, message: {})".format(pageid, revid, logid, message))
db_connection.commit()
def clean_entries():
"""Cleans entries that are 50+"""
cleanup = db_cursor.execute(
"SELECT message_id FROM messages WHERE message_id NOT IN (SELECT message_id FROM messages ORDER BY message_id asc LIMIT 50);")
for row in cleanup:
db_cursor.execute("DELETE FROM messages WHERE message_id = ?", (cleanup[0]))
cleanup = db_cursor.execute("SELECT msg_id FROM event WHERE msg_id NOT IN (SELECT msg_id FROM event ORDER BY msg_id asc LIMIT 50);")
for row in cleanup:
db_cursor.execute("DELETE FROM event WHERE msg_id = ?", (cleanup[0]))
db_connection.commit()
db_connection, db_cursor = create_connection()
check_tables()

View file

@ -6,7 +6,7 @@ import requests
from bs4 import BeautifulSoup
from src.configloader import settings
from src.misc import WIKI_SCRIPT_PATH, WIKI_API_PATH, datafile, send_simple, safe_read, LinkParser
from src.misc import WIKI_SCRIPT_PATH, WIKI_API_PATH, datafile, send_simple, safe_read, LinkParser, AUTO_SUPPRESSION_ENABLED
from src.discord.queue import messagequeue
from src.exceptions import MWError
from src.session import session
@ -333,6 +333,9 @@ class Recent_Changes_Class(object):
def clear_cache(self):
self.map_ips = {}
if AUTO_SUPPRESSION_ENABLED:
from src.fileio.database import clean_entries
clean_entries()
def init_info(self):
startup_info = safe_read(self.safe_request(