mirror of
https://github.com/sartography/cr-connect-workflow.git
synced 2025-02-23 13:18:35 +00:00
Add DocumentModel that combines FileModel and FileDataModel
This commit is contained in:
parent
6694dc6cb3
commit
7c23d36d7c
@ -62,6 +62,27 @@ CONTENT_TYPES = {
|
||||
}
|
||||
|
||||
|
||||
class DocumentModel(db.Model):
|
||||
__tablename__ = 'document'
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
name = db.Column(db.String, nullable=False)
|
||||
type = db.Column(db.String, nullable=False)
|
||||
content_type = db.Column(db.String, nullable=False)
|
||||
workflow_id = db.Column(db.Integer, db.ForeignKey('workflow.id'), 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.
|
||||
# TODO: Fix relationship with data_store table, then add this back in
|
||||
# data_stores = relationship(DataStoreModel, cascade="all,delete", backref="file")
|
||||
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)
|
||||
# size = db.Column(db.Integer, default=0) # Do we need this?
|
||||
date_modified = db.Column(db.DateTime(timezone=True), onupdate=func.now())
|
||||
date_created = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
||||
user_uid = db.Column(db.String, db.ForeignKey('user.uid'), nullable=True)
|
||||
archived = db.Column(db.Boolean, default=False)
|
||||
|
||||
|
||||
class FileDataModel(db.Model):
|
||||
__tablename__ = 'file_data'
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
@ -143,6 +164,15 @@ class File(object):
|
||||
return instance
|
||||
|
||||
|
||||
class DocumentModelSchema(SQLAlchemyAutoSchema):
|
||||
class Meta:
|
||||
model = DocumentModel
|
||||
load_instance = True
|
||||
include_relationships = True
|
||||
include_fk = True # Includes foreign keys
|
||||
unknown = EXCLUDE
|
||||
|
||||
|
||||
class FileModelSchema(SQLAlchemyAutoSchema):
|
||||
class Meta:
|
||||
model = FileModel
|
||||
|
45
migrations/versions/92d554ab6e32_file_refactor.py
Normal file
45
migrations/versions/92d554ab6e32_file_refactor.py
Normal file
@ -0,0 +1,45 @@
|
||||
"""File refactor
|
||||
|
||||
Revision ID: 92d554ab6e32
|
||||
Revises: a345e44ecd27
|
||||
Create Date: 2022-04-08 10:46:46.422328
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy.dialects import postgresql
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '92d554ab6e32'
|
||||
down_revision = 'a345e44ecd27'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# TODO: Fix data_store references and include data_stores, decide whether to keep size
|
||||
# data_stores = relationship(DataStoreModel, cascade="all,delete", backref="file")
|
||||
# size = db.Column(db.Integer, default=0) # Do we need this?
|
||||
op.create_table('document',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('name', sa.String(), nullable=True),
|
||||
sa.Column('type', sa.String, nullable=False),
|
||||
sa.Column('content_type', sa.String(), nullable=True),
|
||||
sa.Column('workflow_id', sa.Integer(), nullable=True),
|
||||
sa.Column('task_spec', sa.String, nullable=True),
|
||||
sa.Column('irb_doc_code', sa.String, nullable=False),
|
||||
sa.Column('md5_hash', postgresql.UUID(as_uuid=True), nullable=False),
|
||||
sa.Column('data', sa.LargeBinary(), nullable=True),
|
||||
sa.Column('date_modified', sa.DateTime(timezone=True), nullable=True, onupdate=sa.func.now()),
|
||||
sa.Column('date_created', sa.DateTime(timezone=True), nullable=True, server_default=sa.func.now()),
|
||||
sa.Column('user_uid', sa.String(), nullable=True),
|
||||
sa.Column('archived', sa.Boolean(), default=False),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
sa.ForeignKeyConstraint(['user_uid'], ['user.uid'], ),
|
||||
sa.ForeignKeyConstraint(['workflow_id'], ['workflow.id'], ),
|
||||
)
|
||||
|
||||
|
||||
def downgrade():
|
||||
op.drop_table('document')
|
Loading…
x
Reference in New Issue
Block a user