22 lines
1.4 KiB
MySQL
22 lines
1.4 KiB
MySQL
|
|
-- PR График публикации (календарь тем для постов)
|
|||
|
|
CREATE TABLE IF NOT EXISTS pr_post_topics (
|
|||
|
|
id BIGSERIAL PRIMARY KEY,
|
|||
|
|
title TEXT NOT NULL,
|
|||
|
|
description TEXT,
|
|||
|
|
scheduled_date DATE, -- дата планируемой публикации (может быть NULL для старых записей)
|
|||
|
|
month VARCHAR(7) NOT NULL, -- формат YYYY-MM для фильтрации
|
|||
|
|
status VARCHAR(20) NOT NULL DEFAULT 'draft' CHECK (status IN ('draft', 'pending_approval', 'approved', 'rejected')),
|
|||
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|||
|
|
created_by TEXT,
|
|||
|
|
approved_at TIMESTAMPTZ,
|
|||
|
|
approved_by TEXT,
|
|||
|
|
rejection_reason TEXT,
|
|||
|
|
created_at_month VARCHAR(7) GENERATED ALWAYS AS (TO_CHAR(created_at, 'YYYY-MM')) STORED
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
CREATE INDEX IF NOT EXISTS idx_pr_post_topics_month ON pr_post_topics(month DESC);
|
|||
|
|
CREATE INDEX IF NOT EXISTS idx_pr_post_topics_scheduled_date ON pr_post_topics(scheduled_date);
|
|||
|
|
CREATE INDEX IF NOT EXISTS idx_pr_post_topics_status ON pr_post_topics(status);
|
|||
|
|
|
|||
|
|
COMMENT ON TABLE pr_post_topics IS 'График публикации (календарь тем) - план публикаций на месяц. По этим темам создаются посты с контентом.';
|