PHP Classes

File: SQL File

Recommend this page to a friend!
  Packages of Matthew Asham   Binkterm PHP   database/migrations/v1.10.13_mrc_schema.sql   Download  
File: database/migrations/v1.10.13_mrc_schema.sql
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: Binkterm PHP
Bulletin board system based on the Web
Author: By
Last change:
Date: 5 days ago
Size: 3,099 bytes
 

Contents

Class file image Download
-- MRC (Multi Relay Chat) Schema Migration -- Version 1.9.3.1 -- Creates tables for MRC chat system following MRC Protocol v1.3 -- MRC room list and metadata CREATE TABLE IF NOT EXISTS mrc_rooms ( room_name VARCHAR(30) PRIMARY KEY, topic VARCHAR(55), topic_set_by VARCHAR(30), topic_set_at TIMESTAMP, has_password BOOLEAN DEFAULT FALSE, join_part_messages BOOLEAN DEFAULT TRUE, topic_locked BOOLEAN DEFAULT FALSE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, last_activity TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- MRC user presence tracking CREATE TABLE IF NOT EXISTS mrc_users ( id SERIAL PRIMARY KEY, username VARCHAR(30) NOT NULL, bbs_name VARCHAR(64) NOT NULL, room_name VARCHAR(30) NOT NULL REFERENCES mrc_rooms(room_name) ON DELETE CASCADE, ip_address VARCHAR(50), connected_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, last_seen TIMESTAMP DEFAULT CURRENT_TIMESTAMP, is_afk BOOLEAN DEFAULT FALSE, afk_message VARCHAR(55), UNIQUE(username, bbs_name, room_name) ); -- MRC message history (last 1000 messages per room) CREATE TABLE IF NOT EXISTS mrc_messages ( id SERIAL PRIMARY KEY, from_user VARCHAR(30) NOT NULL, from_site VARCHAR(30) NOT NULL, from_room VARCHAR(30), to_user VARCHAR(30), to_room VARCHAR(30), message_body TEXT NOT NULL, msg_ext VARCHAR(30), is_private BOOLEAN DEFAULT FALSE, received_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- MRC outbound message queue CREATE TABLE IF NOT EXISTS mrc_outbound ( id SERIAL PRIMARY KEY, field1 VARCHAR(30) NOT NULL, -- FromUser or CLIENT/SERVER field2 VARCHAR(120) NOT NULL, -- FromSite or command field3 VARCHAR(30), -- FromRoom field4 VARCHAR(30), -- ToUser field5 VARCHAR(30), -- MsgExt field6 VARCHAR(30), -- ToRoom field7 VARCHAR(140) NOT NULL, -- MessageBody created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, sent_at TIMESTAMP, priority INTEGER DEFAULT 0 ); -- MRC connection state (stores daemon state like last ping, connected status, etc.) CREATE TABLE IF NOT EXISTS mrc_state ( key VARCHAR(50) PRIMARY KEY, value TEXT, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- Indexes for performance CREATE INDEX IF NOT EXISTS idx_mrc_messages_room_time ON mrc_messages(to_room, received_at); CREATE INDEX IF NOT EXISTS idx_mrc_messages_private ON mrc_messages(to_user, received_at); CREATE INDEX IF NOT EXISTS idx_mrc_messages_received ON mrc_messages(received_at DESC); CREATE INDEX IF NOT EXISTS idx_mrc_outbound_pending ON mrc_outbound(sent_at, priority); CREATE INDEX IF NOT EXISTS idx_mrc_users_room ON mrc_users(room_name); CREATE INDEX IF NOT EXISTS idx_mrc_users_last_seen ON mrc_users(last_seen); -- Insert initial state values INSERT INTO mrc_state (key, value) VALUES ('connected', 'false') ON CONFLICT (key) DO NOTHING; INSERT INTO mrc_state (key, value) VALUES ('last_ping', '0') ON CONFLICT (key) DO NOTHING; INSERT INTO mrc_state (key, value) VALUES ('server_info', '{}') ON CONFLICT (key) DO NOTHING;