Skip to content

Commit d1790cb

Browse files
authored
Merge pull request #244 from UW-Macrostrat/foreign-key-migrations
Foreign key migrations
2 parents 0bd572b + 16d5575 commit d1790cb

31 files changed

+2542
-2376
lines changed

py-modules/cli/macrostrat/cli/schema_management/__init__.py

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,23 @@
55
from typing import Callable
66

77
import click
8+
from macrostrat.app_frame import CommandBase
9+
from macrostrat.database import Database
10+
from macrostrat.database.transfer import pg_dump_to_file
11+
from macrostrat.database.transfer.utils import raw_database_url
12+
from macrostrat.utils import get_logger
13+
from macrostrat.utils.shell import run
814
from results import db as results_db
915
from results.dbdiff import Migration
1016
from rich import print
17+
from sqlparse import format as format_sql
1118
from typer import Argument, Option
1219

13-
from macrostrat.app_frame import CommandBase
1420
from macrostrat.core import app as macrostrat_app
1521
from macrostrat.core.config import settings
1622
from macrostrat.core.database import get_database
1723
from macrostrat.core.exc import MacrostratError
1824
from macrostrat.core.migrations import run_migrations
19-
from macrostrat.database import Database
20-
from macrostrat.database.transfer import pg_dump_to_file
21-
from macrostrat.database.transfer.utils import raw_database_url
22-
from macrostrat.utils import get_logger
23-
from macrostrat.utils.shell import run
24-
25-
from ..database.utils import engine_for_db_name
2625
from .defs import (
2726
StatementCounter,
2827
apply_schema_for_environment,
@@ -35,6 +34,7 @@
3534
# First, register all migrations
3635
# NOTE: right now, this is quite implicit.
3736
from .migration_system import load_migrations
37+
from ..database.utils import engine_for_db_name
3838

3939
log = get_logger(__name__)
4040

@@ -93,8 +93,17 @@ def plan():
9393
f"[dim]Writing {len(m.statements)} proposed changes to [bold]{out_file}[/]"
9494
)
9595

96+
statements = [
97+
format_sql(s, reindent_aligned=True, compact=True, keyword_case="upper")
98+
for s in m.statements
99+
]
100+
96101
with open(out_file, "w") as f:
97-
f.write("\n".join(m.statements))
102+
for statement in statements:
103+
f.write(statement + "\n")
104+
# Extra newline after statements that span multiple lines
105+
if "\n" in statement:
106+
f.write("\n")
98107

99108

100109
@schema_app.command(rich_help_panel="Automated migrations")

py-modules/cli/macrostrat/cli/schema_management/defs.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
from contextlib import contextmanager
22

33
import docker
4+
from macrostrat.database import Database
5+
from macrostrat.dinosaur.upgrade_cluster.utils import database_cluster
46
from results.dbdiff.statements import check_for_drop
57
from results.schemainspect.pg import PostgreSQL
68
from results.schemainspect.pg.obj import PROPS
79
from rich import print
810

911
from macrostrat.core.config import settings
10-
from macrostrat.database import Database
11-
from macrostrat.dinosaur.upgrade_cluster.utils import database_cluster
1212

1313

1414
def is_unsafe_statement(s: str) -> bool:
@@ -51,18 +51,26 @@ def schema_dirs_for_environment(env: str):
5151

5252

5353
def apply_schema_for_environment(
54-
db: Database, env: str, *, recursive: bool = True, statement_filter=None
54+
db: Database,
55+
env: str,
56+
*,
57+
recursive: bool = True,
58+
statement_filter=lambda s, p: True,
5559
):
5660
for env_dir in schema_dirs_for_environment(env):
5761
schema_dir = env_dir
5862
if not schema_dir.exists():
5963
continue
60-
fixtures = sorted(list(schema_dir.glob("*.sql")))
64+
65+
func = schema_dir.rglob if recursive else schema_dir.glob
66+
fixtures = sorted(list(func("*.sql")))
6167
fixtures = [f for f in fixtures if not f.name.endswith(".plan.sql")]
6268

6369
if len(fixtures) == 0:
6470
continue
65-
db.run_fixtures(fixtures, recursive=recursive, statement_filter=filter)
71+
db.run_fixtures(
72+
fixtures, recursive=recursive, statement_filter=statement_filter
73+
)
6674

6775

6876
@contextmanager

py-modules/cli/macrostrat/cli/subsystems/macrostrat_api/schema/01-column-builder-views.sql

Lines changed: 0 additions & 206 deletions
This file was deleted.

0 commit comments

Comments
 (0)