a1d4r / practicum-notifications

Service for notifications
0 stars 0 forks source link

Миграции и Админ-панель #3

Closed a1d4r closed 1 month ago

a1d4r commented 1 month ago

Admin панель

Создать сервис на Django. Создать таблицы описанные ниже

Из админки должна быть возможность:

Схема данных

Таблица notifications хранит базовую информацию об уведомлениях, которые уже готовы и должны быть отправлены немедленно

CREATE TABLE notifications  
(  
    id UUID PRIMARY KEY,    
    content_id UUID REFERENCES notification_contents(id), -- Ссылка на содержание уведомления    
    created_at TIMESTAMPTZ NOT NULL,    
    sent_at TIMESTAMPTZ NOT NULL
)  

Таблица notification_contents хранит содержание (параметры) для уведомлений (возможно для одного уведомления, возможно для целой группы - рассылки)

CREATE TABLE notification_contents
(  
    id UUID PRIMARY_KEY,    
    event_type TEXT,  -- Тип события ('user_registered', 'news', 'premiere', ...)    
    template_variables JSONB, -- Переменные для подстановки в шаблон  
    user_id UUID, -- ID пользователя, если уведомление - персонализированное    
    user_group_id UUID,  -- ID группы пользователей (для массовой рассылки)    
    created_at TIMESTAMPTZ NOT NULL,    
    updated_at TIMESTAMPTZ NOT NULL
)  

Таблица notification_templates хранит информацию о шаблонах для уведомлений

CREATE TABLE notification_templates  
(  
    id UUID PRIMARY KEY, 
    event_type TEXT UNIQUE,  -- Тип события (по нему будет осуществляться поиск)
    template_text TEXT NOT NULL,  -- HTML Jinja2 шаблон
    channels ARRAY[TEXT], -- Список способов доставки - SMS, Email, WebSocket 
    created_at TIMESTAMPTZ NOT NULL,    
    updated_at TIMESTAMPTZ NOT NULL
)  

Индексы: