53 lines
1.5 KiB
JavaScript
53 lines
1.5 KiB
JavaScript
/* eslint-disable camelcase */
|
|
|
|
exports.shorthands = undefined;
|
|
|
|
exports.up = pgm => {
|
|
// Проверяем существование таблицы scheduled_notifications
|
|
pgm.sql(`
|
|
DO $$
|
|
BEGIN
|
|
IF EXISTS (
|
|
SELECT 1 FROM information_schema.tables
|
|
WHERE table_name = 'scheduled_notifications'
|
|
) THEN
|
|
-- Проверяем, нет ли уже столбца processed
|
|
IF NOT EXISTS (
|
|
SELECT 1 FROM information_schema.columns
|
|
WHERE table_name = 'scheduled_notifications' AND column_name = 'processed'
|
|
) THEN
|
|
-- Добавляем столбец processed
|
|
ALTER TABLE scheduled_notifications ADD COLUMN processed BOOLEAN DEFAULT FALSE;
|
|
END IF;
|
|
ELSE
|
|
-- Создаем таблицу, если она не существует
|
|
CREATE TABLE scheduled_notifications (
|
|
id UUID PRIMARY KEY,
|
|
user_id UUID REFERENCES users(id),
|
|
type VARCHAR(50) NOT NULL,
|
|
data JSONB,
|
|
scheduled_at TIMESTAMP NOT NULL,
|
|
processed BOOLEAN DEFAULT FALSE,
|
|
created_at TIMESTAMP DEFAULT NOW()
|
|
);
|
|
END IF;
|
|
END
|
|
$$;
|
|
`);
|
|
};
|
|
|
|
exports.down = pgm => {
|
|
pgm.sql(`
|
|
DO $$
|
|
BEGIN
|
|
IF EXISTS (
|
|
SELECT 1 FROM information_schema.columns
|
|
WHERE table_name = 'scheduled_notifications' AND column_name = 'processed'
|
|
) THEN
|
|
ALTER TABLE scheduled_notifications DROP COLUMN processed;
|
|
END IF;
|
|
END
|
|
$$;
|
|
`);
|
|
};
|