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) spec_id = db.Column(db.String)
user_id = db.Column(db.String, nullable=True) user_id = db.Column(db.String, nullable=True)
file_id = db.Column(db.Integer, db.ForeignKey('file.id'), 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) value = db.Column(db.String)

View File

@ -72,7 +72,7 @@ class DocumentModel(db.Model):
task_spec = db.Column(db.String, nullable=True) 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. 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 # 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) 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. data = deferred(db.Column(db.LargeBinary)) # Don't load it unless you have to.
# TODO: Determine whether size is used (in frontend/bpmn) # TODO: Determine whether size is used (in frontend/bpmn)

View File

@ -9,8 +9,9 @@ from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from sqlalchemy.exc import IntegrityError from sqlalchemy.exc import IntegrityError
from crc.models.file import FileModel, FileDataModel, DocumentModel
from crc import app 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 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(): def upgrade():
bind = op.get_bind() bind = op.get_bind()
session = sa.orm.Session(bind=bind) session = sa.orm.Session(bind=bind)
@ -67,4 +75,4 @@ def upgrade():
def downgrade(): def downgrade():
pass op.execute('DELETE FROM document;')

View File

@ -39,7 +39,11 @@ def upgrade():
sa.ForeignKeyConstraint(['user_uid'], ['user.uid'], ), sa.ForeignKeyConstraint(['user_uid'], ['user.uid'], ),
sa.ForeignKeyConstraint(['workflow_id'], ['workflow.id'], ), 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(): def downgrade():
op.drop_table('document') op.drop_table('document')
# op.drop_column('data_store', 'document_id')
# op.drop_constraint('document_id_key', 'data_store', type_='foreignkey')