#ＤＢ接続情報を変えたい場合はこっちをいじる．
# テーブル定義を変更する場合は，models.py をいじる

from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy.ext.declarative import declarative_base
import os


# 現在のファイルの絶対パスを取得し，それをStudentKey.dbと結合する
# database.pyと同じパスに StudentKey10.db というファイルを絶対パスで定義
databese_file = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'StudentKey10.db')

# sqlliteを指定して、sqliteデータベースファイルを作成する
# SQLiteを利用して上で定義した絶対パスにDBを構築する
engine = create_engine('sqlite:///' + databese_file)

# scoped_sessionという内部にSession管理レジストリを内包したクラスによる生成方法
#  (scoped_session()とは複数のスレッドから接続を安全に行うために使用される関数)
# db_session() を何回実行しても同一の db_session が返される
# DB接続用インスタンスを生成する
db_session = scoped_session(sessionmaker(autocommit=False,autoflush=False,bind=engine))

#モデルベースを作成する
# Baseオブジェクトを生成する
Base = declarative_base()

# 実行用のセッション格納？
# そこにＤＢの情報を流し込む
Base.query = db_session.query_property()

# DB初期化のための関数
# import分でDB初期化対象のテーブル定義を指定して，Base.metadata.create_all(bind=engine)でテーブルを作成
def init_db():
    import model.models
    Base.metadata.create_all(bind=engine)
