diff options
Diffstat (limited to 'animism-align/cli/app/sql')
31 files changed, 257 insertions, 0 deletions
diff --git a/animism-align/cli/app/sql/__pycache__/common.cpython-37.pyc b/animism-align/cli/app/sql/__pycache__/common.cpython-37.pyc Binary files differnew file mode 100644 index 0000000..fe626e5 --- /dev/null +++ b/animism-align/cli/app/sql/__pycache__/common.cpython-37.pyc diff --git a/animism-align/cli/app/sql/__pycache__/env.cpython-37.pyc b/animism-align/cli/app/sql/__pycache__/env.cpython-37.pyc Binary files differnew file mode 100644 index 0000000..b8ea29b --- /dev/null +++ b/animism-align/cli/app/sql/__pycache__/env.cpython-37.pyc diff --git a/animism-align/cli/app/sql/common.py b/animism-align/cli/app/sql/common.py new file mode 100644 index 0000000..6f3586b --- /dev/null +++ b/animism-align/cli/app/sql/common.py @@ -0,0 +1,35 @@ +import os +import glob +import time + +# import mysql.connector +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 + +# connection_url = "mysql+mysqlconnector://{}:{}@{}/{}?charset=utf8mb4".format( +# os.getenv("DB_USER"), +# os.getenv("DB_PASS"), +# os.getenv("DB_HOST"), +# os.getenv("DB_NAME") +# ) + +os.makedirs(app_cfg.DIR_DATABASE, exist_ok=True) + +connection_url = "sqlite:///{}".format(os.path.join(app_cfg.DIR_DATABASE, 'animism.sqlite3')) + +engine = create_engine(connection_url, encoding="utf-8", pool_recycle=3600) + +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.timestamp import Timestamp +from app.sql.models.upload import Upload diff --git a/animism-align/cli/app/sql/env.py b/animism-align/cli/app/sql/env.py new file mode 100644 index 0000000..839a30b --- /dev/null +++ b/animism-align/cli/app/sql/env.py @@ -0,0 +1,69 @@ +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.timestamp import Timestamp +from app.sql.models.upload import Upload + +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() diff --git a/animism-align/cli/app/sql/models/__pycache__/collection.cpython-37.pyc b/animism-align/cli/app/sql/models/__pycache__/collection.cpython-37.pyc Binary files differnew file mode 100644 index 0000000..927259d --- /dev/null +++ b/animism-align/cli/app/sql/models/__pycache__/collection.cpython-37.pyc diff --git a/animism-align/cli/app/sql/models/__pycache__/collection_media.cpython-37.pyc b/animism-align/cli/app/sql/models/__pycache__/collection_media.cpython-37.pyc Binary files differnew file mode 100644 index 0000000..cacd652 --- /dev/null +++ b/animism-align/cli/app/sql/models/__pycache__/collection_media.cpython-37.pyc diff --git a/animism-align/cli/app/sql/models/__pycache__/detection_type.cpython-37.pyc b/animism-align/cli/app/sql/models/__pycache__/detection_type.cpython-37.pyc Binary files differnew file mode 100644 index 0000000..195474b --- /dev/null +++ b/animism-align/cli/app/sql/models/__pycache__/detection_type.cpython-37.pyc diff --git a/animism-align/cli/app/sql/models/__pycache__/detection_type_import.cpython-37.pyc b/animism-align/cli/app/sql/models/__pycache__/detection_type_import.cpython-37.pyc Binary files differnew file mode 100644 index 0000000..df4e41e --- /dev/null +++ b/animism-align/cli/app/sql/models/__pycache__/detection_type_import.cpython-37.pyc diff --git a/animism-align/cli/app/sql/models/__pycache__/feature_type.cpython-37.pyc b/animism-align/cli/app/sql/models/__pycache__/feature_type.cpython-37.pyc Binary files differnew file mode 100644 index 0000000..12b566b --- /dev/null +++ b/animism-align/cli/app/sql/models/__pycache__/feature_type.cpython-37.pyc diff --git a/animism-align/cli/app/sql/models/__pycache__/feature_type_import.cpython-37.pyc b/animism-align/cli/app/sql/models/__pycache__/feature_type_import.cpython-37.pyc Binary files differnew file mode 100644 index 0000000..ff1c5c1 --- /dev/null +++ b/animism-align/cli/app/sql/models/__pycache__/feature_type_import.cpython-37.pyc diff --git a/animism-align/cli/app/sql/models/__pycache__/graph.cpython-37.pyc b/animism-align/cli/app/sql/models/__pycache__/graph.cpython-37.pyc Binary files differnew file mode 100644 index 0000000..f803c6b --- /dev/null +++ b/animism-align/cli/app/sql/models/__pycache__/graph.cpython-37.pyc diff --git a/animism-align/cli/app/sql/models/__pycache__/media.cpython-37.pyc b/animism-align/cli/app/sql/models/__pycache__/media.cpython-37.pyc Binary files differnew file mode 100644 index 0000000..8c75482 --- /dev/null +++ b/animism-align/cli/app/sql/models/__pycache__/media.cpython-37.pyc diff --git a/animism-align/cli/app/sql/models/__pycache__/media_detection.cpython-37.pyc b/animism-align/cli/app/sql/models/__pycache__/media_detection.cpython-37.pyc Binary files differnew file mode 100644 index 0000000..5579e49 --- /dev/null +++ b/animism-align/cli/app/sql/models/__pycache__/media_detection.cpython-37.pyc diff --git a/animism-align/cli/app/sql/models/__pycache__/media_import.cpython-37.pyc b/animism-align/cli/app/sql/models/__pycache__/media_import.cpython-37.pyc Binary files differnew file mode 100644 index 0000000..8ba8af4 --- /dev/null +++ b/animism-align/cli/app/sql/models/__pycache__/media_import.cpython-37.pyc diff --git a/animism-align/cli/app/sql/models/__pycache__/page.cpython-37.pyc b/animism-align/cli/app/sql/models/__pycache__/page.cpython-37.pyc Binary files differnew file mode 100644 index 0000000..3907746 --- /dev/null +++ b/animism-align/cli/app/sql/models/__pycache__/page.cpython-37.pyc diff --git a/animism-align/cli/app/sql/models/__pycache__/tile.cpython-37.pyc b/animism-align/cli/app/sql/models/__pycache__/tile.cpython-37.pyc Binary files differnew file mode 100644 index 0000000..743b301 --- /dev/null +++ b/animism-align/cli/app/sql/models/__pycache__/tile.cpython-37.pyc diff --git a/animism-align/cli/app/sql/models/__pycache__/timestamp.cpython-37.pyc b/animism-align/cli/app/sql/models/__pycache__/timestamp.cpython-37.pyc Binary files differnew file mode 100644 index 0000000..8337acf --- /dev/null +++ b/animism-align/cli/app/sql/models/__pycache__/timestamp.cpython-37.pyc diff --git a/animism-align/cli/app/sql/models/__pycache__/upload.cpython-37.pyc b/animism-align/cli/app/sql/models/__pycache__/upload.cpython-37.pyc Binary files differnew file mode 100644 index 0000000..39fb71b --- /dev/null +++ b/animism-align/cli/app/sql/models/__pycache__/upload.cpython-37.pyc diff --git a/animism-align/cli/app/sql/models/timestamp.py b/animism-align/cli/app/sql/models/timestamp.py new file mode 100644 index 0000000..60e9007 --- /dev/null +++ b/animism-align/cli/app/sql/models/timestamp.py @@ -0,0 +1,37 @@ +from sqlalchemy import create_engine, Table, Column, Text, String, Integer, Float, DateTime, JSON, ForeignKey +from sqlalchemy.orm import relationship +import sqlalchemy.sql.functions as func +from sqlalchemy_utc import UtcDateTime, utcnow +from wtforms_alchemy import ModelForm + +from app.sql.common import db, Base, Session +# from app.sql.models.page import Page + +from app.settings import app_cfg + +class Timestamp(Base): + """Table for storing references to graphs""" + __tablename__ = 'graph' + id = Column(Integer, primary_key=True) + type = Column(String(16, convert_unicode=True), nullable=False) + start_ts = Column(Float, nullable=False) + end_ts = Column(Float, nullable=True) + sentence = Column(Text(convert_unicode=True), nullable=True) + settings = Column(JSON, default={}, nullable=True) + + def toJSON(self): + return { + 'id': self.id, + 'type': self.type, + 'start_ts': self.start_ts, + 'end_ts': self.end_ts, + 'sentence': self.description, + 'settings': self.settings, + } + +class TimestampForm(ModelForm): + class Meta: + model = Timestamp + exclude = ['settings'] + def get_session(): + return Session() diff --git a/animism-align/cli/app/sql/models/upload.py b/animism-align/cli/app/sql/models/upload.py new file mode 100644 index 0000000..5863b07 --- /dev/null +++ b/animism-align/cli/app/sql/models/upload.py @@ -0,0 +1,44 @@ +from sqlalchemy import create_engine, Table, Column, String, Integer, DateTime +import sqlalchemy.sql.functions as func +from sqlalchemy_utc import UtcDateTime, utcnow +from wtforms_alchemy import ModelForm + +from app.sql.common import db, Base, Session + +from app.utils.file_utils import sha256_tree +from app.settings import app_cfg + +from os.path import join + +class Upload(Base): + """Table for storing references to various media""" + __tablename__ = 'upload' + id = Column(Integer, primary_key=True) + sha256 = Column(String(256), nullable=False) + fn = Column(String(256), nullable=False) + ext = Column(String(4, convert_unicode=True), nullable=False) + username = Column(String(16, convert_unicode=True), nullable=False) + created_at = Column(UtcDateTime(), default=utcnow()) + + def toJSON(self): + return { + 'id': self.id, + 'sha256': self.sha256, + 'fn': self.fn, + 'ext': self.ext, + 'username': self.username, + 'url': self.url(), + 'created_at': self.created_at, + } + + def filename(self): + return "{}{}".format(self.fn) + + def filepath(self): + return join(app_cfg.DIR_UPLOADS, sha256_tree(self.sha256)) + + def fullpath(self): + return join(self.filepath(), self.filename()) + + def url(self): + return join(app_cfg.URL_UPLOADS, sha256_tree(self.sha256), self.filename()) diff --git a/animism-align/cli/app/sql/script.py.mako b/animism-align/cli/app/sql/script.py.mako new file mode 100644 index 0000000..c4b86b8 --- /dev/null +++ b/animism-align/cli/app/sql/script.py.mako @@ -0,0 +1,25 @@ +"""${message} + +Revision ID: ${up_revision} +Revises: ${down_revision | comma,n} +Create Date: ${create_date} + +""" +from alembic import op +import sqlalchemy as sa +import sqlalchemy_utc +${imports if imports else ""} + +# revision identifiers, used by Alembic. +revision = ${repr(up_revision)} +down_revision = ${repr(down_revision)} +branch_labels = ${repr(branch_labels)} +depends_on = ${repr(depends_on)} + + +def upgrade(): + ${upgrades if upgrades else "pass"} + + +def downgrade(): + ${downgrades if downgrades else "pass"} diff --git a/animism-align/cli/app/sql/versions/202006231946_create_database.py b/animism-align/cli/app/sql/versions/202006231946_create_database.py new file mode 100644 index 0000000..b74f9b3 --- /dev/null +++ b/animism-align/cli/app/sql/versions/202006231946_create_database.py @@ -0,0 +1,47 @@ +"""create database + +Revision ID: e45386a1498b +Revises: +Create Date: 2020-06-23 19:46:05.161996 + +""" +from alembic import op +import sqlalchemy as sa +import sqlalchemy_utc + + +# revision identifiers, used by Alembic. +revision = 'e45386a1498b' +down_revision = None +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('graph', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('type', sa.String(length=16, _expect_unicode=True), nullable=False), + sa.Column('start_ts', sa.Float(), nullable=False), + sa.Column('end_ts', sa.Float(), nullable=True), + sa.Column('sentence', sa.Text(_expect_unicode=True), nullable=True), + sa.Column('settings', sa.JSON(), nullable=True), + sa.PrimaryKeyConstraint('id') + ) + op.create_table('upload', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('sha256', sa.String(length=256), nullable=False), + sa.Column('fn', sa.String(length=256), nullable=False), + sa.Column('ext', sa.String(length=4, _expect_unicode=True), nullable=False), + sa.Column('username', sa.String(length=16, _expect_unicode=True), nullable=False), + sa.Column('created_at', sqlalchemy_utc.sqltypes.UtcDateTime(timezone=True), nullable=True), + sa.PrimaryKeyConstraint('id') + ) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('upload') + op.drop_table('graph') + # ### end Alembic commands ### diff --git a/animism-align/cli/app/sql/versions/__pycache__/202006011922_creating_database.cpython-37.pyc b/animism-align/cli/app/sql/versions/__pycache__/202006011922_creating_database.cpython-37.pyc Binary files differnew file mode 100644 index 0000000..a1adb31 --- /dev/null +++ b/animism-align/cli/app/sql/versions/__pycache__/202006011922_creating_database.cpython-37.pyc diff --git a/animism-align/cli/app/sql/versions/__pycache__/202006011923_adding_pages_table.cpython-37.pyc b/animism-align/cli/app/sql/versions/__pycache__/202006011923_adding_pages_table.cpython-37.pyc Binary files differnew file mode 100644 index 0000000..beeeb71 --- /dev/null +++ b/animism-align/cli/app/sql/versions/__pycache__/202006011923_adding_pages_table.cpython-37.pyc diff --git a/animism-align/cli/app/sql/versions/__pycache__/202006011925_adding_tiles_table.cpython-37.pyc b/animism-align/cli/app/sql/versions/__pycache__/202006011925_adding_tiles_table.cpython-37.pyc Binary files differnew file mode 100644 index 0000000..8d16725 --- /dev/null +++ b/animism-align/cli/app/sql/versions/__pycache__/202006011925_adding_tiles_table.cpython-37.pyc diff --git a/animism-align/cli/app/sql/versions/__pycache__/202006011937_adding_pages.cpython-37.pyc b/animism-align/cli/app/sql/versions/__pycache__/202006011937_adding_pages.cpython-37.pyc Binary files differnew file mode 100644 index 0000000..35b459c --- /dev/null +++ b/animism-align/cli/app/sql/versions/__pycache__/202006011937_adding_pages.cpython-37.pyc diff --git a/animism-align/cli/app/sql/versions/__pycache__/202006011943_adding_database.cpython-37.pyc b/animism-align/cli/app/sql/versions/__pycache__/202006011943_adding_database.cpython-37.pyc Binary files differnew file mode 100644 index 0000000..adf3587 --- /dev/null +++ b/animism-align/cli/app/sql/versions/__pycache__/202006011943_adding_database.cpython-37.pyc diff --git a/animism-align/cli/app/sql/versions/__pycache__/202006011944_adding_uploads.cpython-37.pyc b/animism-align/cli/app/sql/versions/__pycache__/202006011944_adding_uploads.cpython-37.pyc Binary files differnew file mode 100644 index 0000000..159dc66 --- /dev/null +++ b/animism-align/cli/app/sql/versions/__pycache__/202006011944_adding_uploads.cpython-37.pyc diff --git a/animism-align/cli/app/sql/versions/__pycache__/202006021608_creating_database.cpython-37.pyc b/animism-align/cli/app/sql/versions/__pycache__/202006021608_creating_database.cpython-37.pyc Binary files differnew file mode 100644 index 0000000..c5df7ca --- /dev/null +++ b/animism-align/cli/app/sql/versions/__pycache__/202006021608_creating_database.cpython-37.pyc diff --git a/animism-align/cli/app/sql/versions/__pycache__/202006041801_add_sort_order_to_tiles.cpython-37.pyc b/animism-align/cli/app/sql/versions/__pycache__/202006041801_add_sort_order_to_tiles.cpython-37.pyc Binary files differnew file mode 100644 index 0000000..67e35cf --- /dev/null +++ b/animism-align/cli/app/sql/versions/__pycache__/202006041801_add_sort_order_to_tiles.cpython-37.pyc diff --git a/animism-align/cli/app/sql/versions/__pycache__/202006231946_create_database.cpython-37.pyc b/animism-align/cli/app/sql/versions/__pycache__/202006231946_create_database.cpython-37.pyc Binary files differnew file mode 100644 index 0000000..dd49abc --- /dev/null +++ b/animism-align/cli/app/sql/versions/__pycache__/202006231946_create_database.cpython-37.pyc |
