-- Migration: Add read tracking tables for Forum and B2B
-- Date: 2026-01-31
-- Description: Adds tables to track who has read forum topics, replies, and B2B classifieds

-- Forum Topic Reads
CREATE TABLE IF NOT EXISTS forum_topic_reads (
    id SERIAL PRIMARY KEY,
    topic_id INTEGER NOT NULL REFERENCES forum_topics(id) ON DELETE CASCADE,
    user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
    read_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    CONSTRAINT uq_forum_topic_user_read UNIQUE (topic_id, user_id)
);

CREATE INDEX IF NOT EXISTS idx_forum_topic_reads_topic ON forum_topic_reads(topic_id);
CREATE INDEX IF NOT EXISTS idx_forum_topic_reads_user ON forum_topic_reads(user_id);

-- Forum Reply Reads
CREATE TABLE IF NOT EXISTS forum_reply_reads (
    id SERIAL PRIMARY KEY,
    reply_id INTEGER NOT NULL REFERENCES forum_replies(id) ON DELETE CASCADE,
    user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
    read_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    CONSTRAINT uq_forum_reply_user_read UNIQUE (reply_id, user_id)
);

CREATE INDEX IF NOT EXISTS idx_forum_reply_reads_reply ON forum_reply_reads(reply_id);
CREATE INDEX IF NOT EXISTS idx_forum_reply_reads_user ON forum_reply_reads(user_id);

-- Classified (B2B) Reads
CREATE TABLE IF NOT EXISTS classified_reads (
    id SERIAL PRIMARY KEY,
    classified_id INTEGER NOT NULL REFERENCES classifieds(id) ON DELETE CASCADE,
    user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
    read_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    CONSTRAINT uq_classified_user_read UNIQUE (classified_id, user_id)
);

CREATE INDEX IF NOT EXISTS idx_classified_reads_classified ON classified_reads(classified_id);
CREATE INDEX IF NOT EXISTS idx_classified_reads_user ON classified_reads(user_id);

-- Grant permissions
GRANT ALL ON TABLE forum_topic_reads TO nordabiz_app;
GRANT ALL ON TABLE forum_reply_reads TO nordabiz_app;
GRANT ALL ON TABLE classified_reads TO nordabiz_app;
GRANT USAGE, SELECT ON SEQUENCE forum_topic_reads_id_seq TO nordabiz_app;
GRANT USAGE, SELECT ON SEQUENCE forum_reply_reads_id_seq TO nordabiz_app;
GRANT USAGE, SELECT ON SEQUENCE classified_reads_id_seq TO nordabiz_app;
