summaryrefslogtreecommitdiff
path: root/animism-align/cli/app/sql/common.py
blob: 564c1e3c47436c0b5b9e8b3311c988562f480e3a (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
import os
import glob
import time

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

from flask_sqlalchemy import SQLAlchemy

from app.settings import app_cfg

if app_cfg.USE_SQLITE:
  os.makedirs(app_cfg.DIR_DATABASE, exist_ok=True)
  connection_url = "sqlite:///{}".format(os.path.join(app_cfg.DIR_DATABASE, 'animism.sqlite3'))
else:
  connection_url = "mysql+pymysql://{}:{}@{}/{}?charset=utf8mb4".format(
    os.getenv("DB_USER"),
    os.getenv("DB_PASS"),
    os.getenv("DB_HOST"),
    os.getenv("DB_NAME")
  )

engine = create_engine(connection_url, encoding="utf-8", pool_recycle=3600) #, echo="debug")

Session = sessionmaker(bind=engine)
Base = declarative_base()
Base.metadata.bind = engine

db = SQLAlchemy()

# 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.project import Project
from app.sql.models.episode import Episode
from app.sql.models.venue import Venue
from app.sql.models.user import User