"""Add spacy_nlp_pipeline_models table Revision ID: 31dd42e5ea6f Revises: a3b727e3ff71 Create Date: 2022-10-13 12:47:50.870474 """ from alembic import op import shutil import sqlalchemy as sa import os from app.models import User # revision identifiers, used by Alembic. revision = '31dd42e5ea6f' down_revision = 'a3b727e3ff71' branch_labels = None depends_on = None def upgrade(): for user in User.query.all(): spacy_nlp_pipeline_models_dir = os.path.join(user.path, 'spacy_nlp_pipeline_models') if os.path.exists(spacy_nlp_pipeline_models_dir): if not os.path.isdir(spacy_nlp_pipeline_models_dir): raise OSError(f'Not a directory: {spacy_nlp_pipeline_models_dir}') if not os.listdir(spacy_nlp_pipeline_models_dir): raise OSError(f'Directory not empty: {spacy_nlp_pipeline_models_dir}') else: os.mkdir(spacy_nlp_pipeline_models_dir) op.create_table( 'spacy_nlp_pipeline_models', sa.Column('creation_date', sa.DateTime(), nullable=True), sa.Column('filename', sa.String(length=255), nullable=True), sa.Column('last_edited_date', sa.DateTime(), nullable=True), sa.Column('mimetype', sa.String(length=255), nullable=True), sa.Column('id', sa.Integer(), nullable=False), sa.Column('user_id', sa.Integer(), nullable=True), sa.Column('title', sa.String(length=64), nullable=True), sa.Column('description', sa.String(length=255), nullable=True), sa.Column('version', sa.String(length=16), nullable=True), sa.Column('compatible_service_versions', sa.String(length=255), nullable=True), sa.Column('publisher', sa.String(length=128), nullable=True), sa.Column('publisher_url', sa.String(length=512), nullable=True), sa.Column('publishing_url', sa.String(length=512), nullable=True), sa.Column('publishing_year', sa.Integer(), nullable=True), sa.Column('shared', sa.Boolean(), nullable=True), sa.ForeignKeyConstraint(['user_id'], ['users.id'], ), sa.PrimaryKeyConstraint('id') ) def downgrade(): for user in User.query.all(): spacy_nlp_pipeline_models_dir = os.path.join(user.path, 'spacy_nlp_pipeline_models') if os.path.exists(spacy_nlp_pipeline_models_dir): shutil.rmtree(spacy_nlp_pipeline_models_dir) op.drop_table('spacy_nlp_pipeline_models')