Changed Incidents to work with both a TimeFrame and last 50 messages.
This commit is contained in:
		| @@ -4,6 +4,11 @@ from datetime import datetime | ||||
| from typing import List, Dict, Optional | ||||
|  | ||||
|  | ||||
| import sqlite3 | ||||
| import logging | ||||
| from datetime import datetime | ||||
| from typing import List, Dict, Optional | ||||
|  | ||||
| class Database: | ||||
|     def __init__(self, db_path: str = "data/moments.db"): | ||||
|         self.db_path = db_path | ||||
| @@ -12,6 +17,10 @@ class Database: | ||||
|     def _init_db(self): | ||||
|         """Initialize database tables""" | ||||
|         with self._get_connection() as conn: | ||||
|             # Drop tables if they exist (for development) | ||||
|             conn.execute("DROP TABLE IF EXISTS incidents") | ||||
|             conn.execute("DROP TABLE IF EXISTS incident_messages") | ||||
|  | ||||
|             conn.execute(""" | ||||
|                 CREATE TABLE IF NOT EXISTS funny_moments ( | ||||
|                     id INTEGER PRIMARY KEY AUTOINCREMENT, | ||||
| @@ -27,7 +36,11 @@ class Database: | ||||
|                     id TEXT PRIMARY KEY, | ||||
|                     reason TEXT NOT NULL, | ||||
|                     moderator_id INTEGER NOT NULL, | ||||
|                     timestamp DATETIME NOT NULL | ||||
|                     timestamp DATETIME NOT NULL, | ||||
|                     capture_mode TEXT NOT NULL, | ||||
|                     capture_param TEXT, | ||||
|                     start_time DATETIME, | ||||
|                     end_time DATETIME | ||||
|                 ) | ||||
|             """) | ||||
|  | ||||
| @@ -42,34 +55,32 @@ class Database: | ||||
|                     FOREIGN KEY (incident_id) REFERENCES incidents(id) | ||||
|                 ) | ||||
|             """) | ||||
|  | ||||
|             conn.commit() | ||||
|  | ||||
|     def _get_connection(self): | ||||
|         return sqlite3.connect(self.db_path) | ||||
|  | ||||
|     def add_funny_moment(self, message_link: str, author_id: int, description: str = None) -> int: | ||||
|         """Store a funny moment in database""" | ||||
|         with self._get_connection() as conn: | ||||
|             cursor = conn.cursor() | ||||
|             cursor.execute(""" | ||||
|                 INSERT INTO funny_moments  | ||||
|                 (message_link, description, author_id, timestamp) | ||||
|                 VALUES (?, ?, ?, ?) | ||||
|             """, (message_link, description, author_id, datetime.now())) | ||||
|             conn.commit() | ||||
|             return cursor.lastrowid | ||||
|  | ||||
|     def add_incident(self, incident_id: str, reason: str, moderator_id: int, messages: List[Dict]) -> bool: | ||||
|     def add_incident(self, incident_id: str, reason: str, moderator_id: int,  | ||||
|                     messages: List[Dict], capture_mode: str, capture_param: str, | ||||
|                     start_time: datetime = None, end_time: datetime = None) -> bool: | ||||
|         """Store an incident with related messages""" | ||||
|         try: | ||||
|             with self._get_connection() as conn: | ||||
|                 # Add incident record | ||||
|                 conn.execute(""" | ||||
|                     INSERT INTO incidents  | ||||
|                     (id, reason, moderator_id, timestamp) | ||||
|                     VALUES (?, ?, ?, ?) | ||||
|                 """, (incident_id, reason, moderator_id, datetime.now())) | ||||
|                     (id, reason, moderator_id, timestamp, capture_mode, capture_param, start_time, end_time) | ||||
|                     VALUES (?, ?, ?, ?, ?, ?, ?, ?) | ||||
|                 """, ( | ||||
|                     incident_id, | ||||
|                     reason, | ||||
|                     moderator_id, | ||||
|                     datetime.now(), | ||||
|                     capture_mode, | ||||
|                     capture_param, | ||||
|                     start_time, | ||||
|                     end_time | ||||
|                 )) | ||||
|  | ||||
|                 # Add incident messages | ||||
|                 for msg in messages: | ||||
| @@ -88,9 +99,21 @@ class Database: | ||||
|                 conn.commit() | ||||
|                 return True | ||||
|         except Exception as e: | ||||
|             logging.error(f"Failed to save incident: {e}") | ||||
|             logging.error(f"Failed to save incident: {str(e)}") | ||||
|             return False | ||||
|  | ||||
|     def add_funny_moment(self, message_link: str, author_id: int, description: str = None) -> int: | ||||
|         """Store a funny moment in database""" | ||||
|         with self._get_connection() as conn: | ||||
|             cursor = conn.cursor() | ||||
|             cursor.execute(""" | ||||
|                 INSERT INTO funny_moments  | ||||
|                 (message_link, description, author_id, timestamp) | ||||
|                 VALUES (?, ?, ?, ?) | ||||
|             """, (message_link, description, author_id, datetime.now())) | ||||
|             conn.commit() | ||||
|             return cursor.lastrowid | ||||
|  | ||||
|     def get_incident(self, incident_id: str) -> Optional[Dict]: | ||||
|         """Retrieve an incident with its messages""" | ||||
|         with self._get_connection() as conn: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user