matrix-bridge-teams 0.1.0

A bridge between Matrix and Microsoft Teams written in Rust
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);
"#
}