22
33import os
44
5- from sqlalchemy import text
5+ from sqlalchemy import inspect as sa_inspect , text
66from sqlalchemy .engine import Connection
77from sqlalchemy .orm import Session
88from sqlalchemy_searchable import sync_trigger
@@ -69,12 +69,8 @@ def recreate_public_schema(session: Session) -> None:
6969 ")"
7070 )
7171 ).scalar ()
72- if not pg_cron_available :
73- raise RuntimeError (
74- "Cannot initialize database schema: pg_cron extension is not available "
75- "on this PostgreSQL server."
76- )
77- session .execute (text ("CREATE EXTENSION IF NOT EXISTS pg_cron" ))
72+ if pg_cron_available :
73+ session .execute (text ("CREATE EXTENSION IF NOT EXISTS pg_cron" ))
7874 session .execute (APP_READ_GRANT_SQL )
7975 grant_app_read_members (session )
8076 session .commit ()
@@ -83,7 +79,11 @@ def recreate_public_schema(session: Session) -> None:
8379def sync_search_vector_triggers (session : Session ) -> None :
8480 """Ensure SQLAlchemy-searchable triggers exist for every TSVector column."""
8581 conn = session .connection ()
82+ inspector = sa_inspect (conn )
83+ existing_tables = set (inspector .get_table_names ())
8684 for table in Base .metadata .tables .values ():
85+ if table .name not in existing_tables :
86+ continue
8787 for column in table .columns :
8888 if isinstance (column .type , TSVectorType ):
8989 sync_trigger (conn , table .name , column .name , list (column .type .columns ))
0 commit comments