summaryrefslogtreecommitdiff
path: root/animism-align/cli/app/sql/env.py
blob: 1f03a428eabb9a885eaaa3945923fbb9496ffa2b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
from sqlalchemy import engine_from_config
from sqlalchemy import pool

from alembic import context

from app.sql.common import db, engine, connection_url, Base

# this is the Alembic Config object, which provides
# access to the values within the .ini file in use.
config = context.config
config.set_main_option("script_location", "./app/sql")
config.set_main_option("sqlalchemy.url", connection_url)

target_metadata = Base.metadata

# include the models in reverse dependency order, so relationships work
from app.sql.models.annotation import Annotation
from app.sql.models.paragraph import Paragraph
from app.sql.models.upload import Upload
from app.sql.models.media import Media
from app.sql.models.episode import Episode
from app.sql.models.venue import Venue

def run_migrations_offline():
  """Run migrations in 'offline' mode.

  This configures the context with just a URL
  and not an Engine, though an Engine is acceptable
  here as well.  By skipping the Engine creation
  we don't even need a DBAPI to be available.

  Calls to context.execute() here emit the given string to the
  script output.

  """
  url = config.get_main_option("sqlalchemy.url")
  context.configure(
    url=url,
    target_metadata=target_metadata,
    literal_binds=True,
    dialect_opts={"paramstyle": "named"},
  )

  with context.begin_transaction():
    context.run_migrations()


def run_migrations_online():
  """Run migrations in 'online' mode.

  In this scenario we need to create an Engine
  and associate a connection with the context.

  """
  # connectable = engine_from_config(
  #   config.get_section(config.config_ini_section),
  #   prefix="sqlalchemy.",
  #   poolclass=pool.NullPool,
  # )

  with engine.connect() as connection:
    context.configure(
      connection=connection, target_metadata=target_metadata
    )

    with context.begin_transaction():
      context.run_migrations()


if context.is_offline_mode():
  run_migrations_offline()
else:
  run_migrations_online()