-- ============================================================
-- Migration: 019_announcement_reads.sql
-- Description: Śledzenie odczytów ogłoszeń (seen by)
-- Author: Claude
-- Date: 2026-01-27
-- ============================================================

-- Tabela przechowująca informacje o odczytach ogłoszeń
CREATE TABLE IF NOT EXISTS announcement_reads (
    id SERIAL PRIMARY KEY,
    announcement_id INTEGER NOT NULL REFERENCES announcements(id) ON DELETE CASCADE,
    user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
    read_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

    -- Unikalna kombinacja - użytkownik może przeczytać ogłoszenie tylko raz
    UNIQUE(announcement_id, user_id)
);

-- Indeksy dla szybkiego wyszukiwania
CREATE INDEX IF NOT EXISTS idx_announcement_reads_announcement ON announcement_reads(announcement_id);
CREATE INDEX IF NOT EXISTS idx_announcement_reads_user ON announcement_reads(user_id);
CREATE INDEX IF NOT EXISTS idx_announcement_reads_read_at ON announcement_reads(read_at DESC);

-- Uprawnienia
GRANT ALL ON TABLE announcement_reads TO nordabiz_app;
GRANT USAGE, SELECT ON SEQUENCE announcement_reads_id_seq TO nordabiz_app;

-- Komentarze
COMMENT ON TABLE announcement_reads IS 'Śledzenie kto przeczytał które ogłoszenie (seen by)';
COMMENT ON COLUMN announcement_reads.read_at IS 'Data i czas pierwszego odczytu';
