mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2024-06-02 21:39:23 +00:00
71 lines
3.5 KiB
Python
71 lines
3.5 KiB
Python
# Generated by Django 3.2.20 on 2023-11-25 00:47
|
|
|
|
from importlib import import_module
|
|
import re
|
|
|
|
from django.db import migrations
|
|
import pgtrigger.compiler
|
|
import pgtrigger.migrations
|
|
|
|
trigger_migration = import_module("bookwyrm.migrations.0077_auto_20210623_2155")
|
|
|
|
# it's _very_ convenient for development that this migration be reversible
|
|
search_vector_trigger = trigger_migration.Migration.operations[4]
|
|
author_search_vector_trigger = trigger_migration.Migration.operations[5]
|
|
|
|
|
|
assert re.search(r"\bCREATE TRIGGER search_vector_trigger\b", search_vector_trigger.sql)
|
|
assert re.search(
|
|
r"\bCREATE TRIGGER author_search_vector_trigger\b",
|
|
author_search_vector_trigger.sql,
|
|
)
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
dependencies = [
|
|
("bookwyrm", "0190_book_search_updates"),
|
|
]
|
|
|
|
operations = [
|
|
pgtrigger.migrations.AddTrigger(
|
|
model_name="book",
|
|
trigger=pgtrigger.compiler.Trigger(
|
|
name="update_search_vector_on_book_edit",
|
|
sql=pgtrigger.compiler.UpsertTriggerSql(
|
|
func="new.search_vector := coalesce(nullif(setweight(to_tsvector('english', coalesce(new.title, '')), 'A'), ''), setweight(to_tsvector('simple', coalesce(new.title, '')), 'A')) || setweight(to_tsvector('english', coalesce(new.subtitle, '')), 'B') || (SELECT setweight(to_tsvector('simple', coalesce(array_to_string(array_agg(bookwyrm_author.name), ' '), '')), 'C') FROM bookwyrm_book LEFT OUTER JOIN bookwyrm_book_authors ON bookwyrm_book.id = bookwyrm_book_authors.book_id LEFT OUTER JOIN bookwyrm_author ON bookwyrm_book_authors.author_id = bookwyrm_author.id WHERE bookwyrm_book.id = new.id ) || setweight(to_tsvector('english', coalesce(new.series, '')), 'D');RETURN NEW;",
|
|
hash="9c898d46dfb7492ecd18f6c692bbecfa548f0e85",
|
|
operation='INSERT OR UPDATE OF "title", "subtitle", "series", "search_vector"',
|
|
pgid="pgtrigger_update_search_vector_on_book_edit_bec58",
|
|
table="bookwyrm_book",
|
|
when="BEFORE",
|
|
),
|
|
),
|
|
),
|
|
pgtrigger.migrations.AddTrigger(
|
|
model_name="author",
|
|
trigger=pgtrigger.compiler.Trigger(
|
|
name="reset_search_vector_on_author_edit",
|
|
sql=pgtrigger.compiler.UpsertTriggerSql(
|
|
func="WITH book AS (SELECT bookwyrm_book.id AS row_id FROM bookwyrm_author LEFT OUTER JOIN bookwyrm_book_authors ON bookwyrm_book_authors.author_id = bookwyrm_author.id LEFT OUTER JOIN bookwyrm_book ON bookwyrm_book.id = bookwyrm_book_authors.book_id WHERE bookwyrm_author.id = new.id ) UPDATE bookwyrm_book SET search_vector = '' FROM book WHERE id = book.row_id;RETURN NEW;",
|
|
hash="abc8ea76fa1bf02a0f56aaae390c1b970bef1278",
|
|
operation='UPDATE OF "name"',
|
|
pgid="pgtrigger_reset_search_vector_on_author_edit_a447c",
|
|
table="bookwyrm_author",
|
|
when="AFTER",
|
|
),
|
|
),
|
|
),
|
|
migrations.RunSQL(
|
|
sql="""DROP TRIGGER IF EXISTS search_vector_trigger ON bookwyrm_book;
|
|
DROP FUNCTION IF EXISTS book_trigger;
|
|
""",
|
|
reverse_sql=search_vector_trigger.sql,
|
|
),
|
|
migrations.RunSQL(
|
|
sql="""DROP TRIGGER IF EXISTS author_search_vector_trigger ON bookwyrm_author;
|
|
DROP FUNCTION IF EXISTS author_trigger;
|
|
""",
|
|
reverse_sql=author_search_vector_trigger.sql,
|
|
),
|
|
]
|