ytptube/app/migrations/20260121134838_add_notifications_table.py

40 lines
1.2 KiB
Python

"""
This module contains a db migration.
Migration Name: add_notifications_table
Migration Version: 20260121134838
"""
from sqlalchemy import text
async def upgrade(c):
sql: list[str] = [
"""
CREATE TABLE IF NOT EXISTS "notifications" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
"name" TEXT NOT NULL UNIQUE,
"on" JSON NOT NULL DEFAULT '[]',
"presets" JSON NOT NULL DEFAULT '[]',
"enabled" BOOLEAN NOT NULL DEFAULT 1,
"request_url" TEXT NOT NULL,
"request_method" TEXT NOT NULL DEFAULT 'POST',
"request_type" TEXT NOT NULL DEFAULT 'json',
"request_data_key" TEXT NOT NULL DEFAULT 'data',
"request_headers" JSON NOT NULL DEFAULT '[]',
"created_at" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);
""",
'CREATE INDEX IF NOT EXISTS "ix_notifications_name" ON "notifications" ("name");',
'CREATE INDEX IF NOT EXISTS "ix_notifications_enabled" ON "notifications" ("enabled");',
]
for sql_stmt in sql:
await c.execute(text(sql_stmt))
async def downgrade(c):
sql = """
DROP TABLE IF EXISTS "notifications";
"""
await c.execute(text(sql))