123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- # Migration to add room settings table
- from datetime import datetime
- def migration(conn):
- with conn.cursor() as cursor:
- cursor.execute(
- """
- CREATE TABLE IF NOT EXISTS room_settings (
- room_id TEXT NOT NULL,
- setting TEXT NOT NULL,
- value TEXT NOT NULL,
- PRIMARY KEY (room_id, setting)
- )
- """
- )
- cursor.execute("SELECT * FROM system_messages")
- system_messages = cursor.fetchall()
- # Get latest system message for each room
- cursor.execute(
- """
- SELECT system_messages.room_id, system_messages.message_id, system_messages.user_id, system_messages.body, system_messages.timestamp
- FROM system_messages
- INNER JOIN (
- SELECT room_id, MAX(timestamp) AS timestamp FROM system_messages GROUP BY room_id
- ) AS latest_system_message ON system_messages.room_id = latest_system_message.room_id AND system_messages.timestamp = latest_system_message.timestamp
- """
- )
- system_messages = cursor.fetchall()
- for message in system_messages:
- cursor.execute(
- "INSERT INTO room_settings (room_id, setting, value) VALUES (?, ?, ?)",
- (message[0], "system_message", message[1])
- )
- cursor.execute("DROP TABLE system_messages")
- cursor.execute(
- "INSERT INTO migrations (id, timestamp) VALUES (5, ?)",
- (datetime.now(),)
- )
- conn.commit()
|