Browse Source

Add model and migration for file

JoostSijm 6 years ago
parent
commit
f48cd811b4
2 changed files with 84 additions and 0 deletions
  1. 43 0
      app/models.py
  2. 41 0
      migrations/versions/d4774c761a71_add_file.py

+ 43 - 0
app/models.py

@@ -12,6 +12,23 @@ from flask_login import UserMixin
 from app import db, argon2, login_manager
 
 
+page_file = db.Table(
+    'page_file',
+    db.Column(
+        'page_id',
+        db.Integer,
+        db.ForeignKey('page.id'),
+        primary_key=True
+    ),
+    db.Column(
+        'file_id',
+        db.Integer,
+        db.ForeignKey('file.id'),
+        primary_key=True
+    ),
+)
+
+
 class User(db.Model, UserMixin):
     """Model for User"""
 
@@ -87,3 +104,29 @@ class Page(db.Model):
         uselist=False,
         remote_side=id
     )
+
+
+class File(db.Model):
+    """Model for Page"""
+
+    id = db.Column(db.Integer, primary_key=True)
+    title = db.Column(db.String, nullable=False)
+    datetime = db.Column(db.DateTime, default=datetime.utcnow)
+    path = db.Column(db.String, nullable=False)
+    identifier = db.Column(db.String) 
+
+    user_id = db.Column(
+        db.Integer,
+        db.ForeignKey("user.id")
+    )
+    user = db.relationship(
+        "User",
+        backref=db.backref("Pages", lazy="dynamic")
+    )
+
+    files = db.relationship(
+        'page',
+        secondary=page_file,
+        lazy='subquery',
+        backref=db.backref('pages', lazy=True)
+    )

+ 41 - 0
migrations/versions/d4774c761a71_add_file.py

@@ -0,0 +1,41 @@
+"""add_file
+
+Revision ID: d4774c761a71
+Revises: b87f52d28bb9
+Create Date: 2019-02-23 18:33:44.647531
+
+"""
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision = 'd4774c761a71'
+down_revision = 'b87f52d28bb9'
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+    op.create_table('file',
+    sa.Column('id', sa.Integer(), nullable=False),
+    sa.Column('title', sa.String(), nullable=False),
+    sa.Column('datetime', sa.DateTime(), nullable=True),
+    sa.Column('path', sa.String(), nullable=False),
+    sa.Column('identifier', sa.String(), nullable=True),
+    sa.Column('user_id', sa.Integer(), nullable=True),
+    sa.ForeignKeyConstraint(['user_id'], ['user.id'], ),
+    sa.PrimaryKeyConstraint('id')
+    )
+    op.create_table('page_file',
+    sa.Column('page_id', sa.Integer(), nullable=False),
+    sa.Column('file_id', sa.Integer(), nullable=False),
+    sa.ForeignKeyConstraint(['file_id'], ['file.id'], ),
+    sa.ForeignKeyConstraint(['page_id'], ['page.id'], ),
+    sa.PrimaryKeyConstraint('page_id', 'file_id')
+    )
+
+
+def downgrade():
+    op.drop_table('page_file')
+    op.drop_table('file')