pub fn schema() -> &'static str {
r#"
-- Room mappings table
CREATE TABLE IF NOT EXISTS room_mappings (
id SERIAL PRIMARY KEY,
teams_channel_id VARCHAR(255) NOT NULL UNIQUE,
matrix_room_id VARCHAR(255) NOT NULL UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- User mappings table
CREATE TABLE IF NOT EXISTS user_mappings (
id SERIAL PRIMARY KEY,
teams_user_id VARCHAR(255) NOT NULL UNIQUE,
matrix_user_id VARCHAR(255) NOT NULL UNIQUE,
display_name TEXT,
avatar_url TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Message mappings table
CREATE TABLE IF NOT EXISTS message_mappings (
id SERIAL PRIMARY KEY,
teams_message_id VARCHAR(255) NOT NULL UNIQUE,
matrix_event_id VARCHAR(255) NOT NULL,
matrix_room_id VARCHAR(255) NOT NULL,
sender_matrix_id VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Indexes for better query performance
CREATE INDEX IF NOT EXISTS idx_room_mappings_channel ON room_mappings(teams_channel_id);
CREATE INDEX IF NOT EXISTS idx_room_mappings_room ON room_mappings(matrix_room_id);
CREATE INDEX IF NOT EXISTS idx_user_mappings_teams ON user_mappings(teams_user_id);
CREATE INDEX IF NOT EXISTS idx_user_mappings_matrix ON user_mappings(matrix_user_id);
CREATE INDEX IF NOT EXISTS idx_message_mappings_teams ON message_mappings(teams_message_id);
CREATE INDEX IF NOT EXISTS idx_message_mappings_matrix ON message_mappings(matrix_event_id);
"#
}