mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-05-04 21:32:39 +02:00
- Added setup_electric_replication function to handle Electric SQL replication for the notifications table during app startup. - Updated alembic migration script to remove direct SQL commands for replication, now managed in app/db.py. - Refactored indexing functions in search_source_connectors_routes to support new start_date and end_date parameters for improved flexibility. - Enhanced Google Gmail indexing task to utilize new date parameters, ensuring better control over indexing periods.
53 lines
1.9 KiB
Python
53 lines
1.9 KiB
Python
"""Add notifications table
|
|
|
|
Revision ID: 60
|
|
Revises: 59
|
|
|
|
Note: Electric SQL replication setup (REPLICA IDENTITY FULL and publication)
|
|
is handled in app/db.py setup_electric_replication() which runs on app startup.
|
|
"""
|
|
from collections.abc import Sequence
|
|
|
|
from alembic import op
|
|
|
|
# revision identifiers, used by Alembic.
|
|
revision: str = "60"
|
|
down_revision: str | None = "59"
|
|
branch_labels: str | Sequence[str] | None = None
|
|
depends_on: str | Sequence[str] | None = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
"""Upgrade schema - add notifications table."""
|
|
# Create notifications table
|
|
op.execute(
|
|
"""
|
|
CREATE TABLE IF NOT EXISTS notifications (
|
|
id SERIAL PRIMARY KEY,
|
|
user_id UUID NOT NULL REFERENCES "user"(id) ON DELETE CASCADE,
|
|
search_space_id INTEGER REFERENCES searchspaces(id) ON DELETE CASCADE,
|
|
type VARCHAR(50) NOT NULL,
|
|
title VARCHAR(200) NOT NULL,
|
|
message TEXT NOT NULL,
|
|
read BOOLEAN NOT NULL DEFAULT FALSE,
|
|
metadata JSONB DEFAULT '{}',
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ
|
|
);
|
|
"""
|
|
)
|
|
|
|
# Create indexes
|
|
op.create_index("ix_notifications_user_id", "notifications", ["user_id"])
|
|
op.create_index("ix_notifications_read", "notifications", ["read"])
|
|
op.create_index("ix_notifications_created_at", "notifications", ["created_at"])
|
|
op.create_index("ix_notifications_user_read", "notifications", ["user_id", "read"])
|
|
|
|
|
|
def downgrade() -> None:
|
|
"""Downgrade schema - remove notifications table."""
|
|
op.drop_index("ix_notifications_user_read", table_name="notifications")
|
|
op.drop_index("ix_notifications_created_at", table_name="notifications")
|
|
op.drop_index("ix_notifications_read", table_name="notifications")
|
|
op.drop_index("ix_notifications_user_id", table_name="notifications")
|
|
op.drop_table("notifications")
|