view sat/memory/migration/versions/129ac51807e4_create_virtual_table_for_full_text_.py @ 3967:f461f11ea176

plugin XEP-0384: Implementation of Automatic Trust Management: - Implementation of Trust Messages (XEP-0434) - Implementation of Automatic Trust Management (XEP-0450) - Implementations directly as part of the OMEMO plugin, since omemo:2 is the only protocol supported by ATM at the moment - Trust system selection updated to allow choice between manual trust with ATM and BTBV - dev-requirements.txt updated to include additional requirements for the e2e tests fix 376
author Syndace <me@syndace.dev>
date Fri, 28 Oct 2022 18:50:06 +0200
parents 162866ca4be7
children
line wrap: on
line source

"""create virtual table for Full-Text Search

Revision ID: 129ac51807e4
Revises: 8974efc51d22
Create Date: 2021-08-13 19:13:54.112538

"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = '129ac51807e4'
down_revision = '8974efc51d22'
branch_labels = None
depends_on = None


def upgrade():
    queries = [
        "CREATE VIRTUAL TABLE pubsub_items_fts "
        "USING fts5(data, content=pubsub_items, content_rowid=id)",
        "CREATE TRIGGER pubsub_items_fts_sync_ins AFTER INSERT ON pubsub_items BEGIN"
        "  INSERT INTO pubsub_items_fts(rowid, data) VALUES (new.id, new.data);"
        "END",
        "CREATE TRIGGER pubsub_items_fts_sync_del AFTER DELETE ON pubsub_items BEGIN"
        "  INSERT INTO pubsub_items_fts(pubsub_items_fts, rowid, data) "
        "VALUES('delete', old.id, old.data);"
        "END",
        "CREATE TRIGGER pubsub_items_fts_sync_upd AFTER UPDATE ON pubsub_items BEGIN"
        "  INSERT INTO pubsub_items_fts(pubsub_items_fts, rowid, data) VALUES"
        "('delete', old.id, old.data);"
        "  INSERT INTO pubsub_items_fts(rowid, data) VALUES(new.id, new.data);"
        "END",
        "INSERT INTO pubsub_items_fts(rowid, data) SELECT id, data from pubsub_items"
    ]
    for q in queries:
        op.execute(sa.DDL(q))


def downgrade():
    queries = [
        "DROP TRIGGER IF EXISTS pubsub_items_fts_sync_ins",
        "DROP TRIGGER IF EXISTS pubsub_items_fts_sync_del",
        "DROP TRIGGER IF EXISTS pubsub_items_fts_sync_upd",
        "DROP TABLE IF EXISTS pubsub_items_fts",
    ]
    for q in queries:
        op.execute(sa.DDL(q))