Prepare for migrating data_stores

This commit is contained in:
mike cullerton 2022-04-13 08:52:22 -04:00
parent a32f9a9458
commit efc37ee59f
4 changed files with 16 additions and 3 deletions

View File

@ -15,6 +15,7 @@ class DataStoreModel(db.Model):
spec_id = db.Column(db.String)
user_id = db.Column(db.String, nullable=True)
file_id = db.Column(db.Integer, db.ForeignKey('file.id'), nullable=True)
document_id = db.Column(db.Integer, db.ForeignKey('document.id'), nullable=True)
value = db.Column(db.String)

View File

@ -72,7 +72,7 @@ class DocumentModel(db.Model):
task_spec = db.Column(db.String, nullable=True)
irb_doc_code = db.Column(db.String, nullable=False) # Code reference to the documents.xlsx reference file.
# TODO: Fix relationship with data_store table, then add this back in
# data_stores = relationship(DataStoreModel, cascade="all,delete", backref="file")
data_stores = relationship(DataStoreModel, cascade="all,delete", backref="document")
md5_hash = db.Column(UUID(as_uuid=True), unique=False, nullable=False)
data = deferred(db.Column(db.LargeBinary)) # Don't load it unless you have to.
# TODO: Determine whether size is used (in frontend/bpmn)

View File

@ -9,8 +9,9 @@ from alembic import op
import sqlalchemy as sa
from sqlalchemy.exc import IntegrityError
from crc.models.file import FileModel, FileDataModel, DocumentModel
from crc import app
from crc.models.data_store import DataStoreModel
from crc.models.file import FileModel, FileDataModel, DocumentModel
@ -21,6 +22,13 @@ branch_labels = None
depends_on = None
def update_data_store(file_id, document_id, session):
data_stores = session.query(DataStoreModel).filter(DataStoreModel.file_id == file_id).all()
for data_store in data_stores:
data_store.document_id = document_id
session.commit()
def upgrade():
bind = op.get_bind()
session = sa.orm.Session(bind=bind)
@ -67,4 +75,4 @@ def upgrade():
def downgrade():
pass
op.execute('DELETE FROM document;')

View File

@ -39,7 +39,11 @@ def upgrade():
sa.ForeignKeyConstraint(['user_uid'], ['user.uid'], ),
sa.ForeignKeyConstraint(['workflow_id'], ['workflow.id'], ),
)
op.add_column('data_store', sa.Column('document_id', sa.Integer(), nullable=True))
op.create_foreign_key('document_id_key', 'data_store', 'document', ['document_id'], ['id'])
def downgrade():
op.drop_table('document')
# op.drop_column('data_store', 'document_id')
# op.drop_constraint('document_id_key', 'data_store', type_='foreignkey')