- Nowa tabela announcement_reads do śledzenia kto przeczytał - Avatary użytkowników z inicjałami (tooltip z nazwiskiem) - Statystyki: liczba i procent użytkowników którzy przeczytali - Progress bar wizualizujący zasięg ogłoszenia - Automatyczny zapis odczytu przy otwarciu ogłoszenia Autor: Maciej Pienczyn Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
31 lines
1.4 KiB
SQL
31 lines
1.4 KiB
SQL
-- ============================================================
|
|
-- 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';
|