diff options
Diffstat (limited to 'fbin/db.py')
-rw-r--r-- | fbin/db.py | 71 |
1 files changed, 25 insertions, 46 deletions
@@ -4,57 +4,52 @@ import mimetypes import os from flask import current_app -from sqlalchemy import create_engine, Column, Integer, String, DateTime, Text, Index, ForeignKey, Boolean, JSON, BigInteger -from sqlalchemy.ext.declarative import declarative_base -from sqlalchemy.orm import sessionmaker, relation, backref from sqlalchemy.orm.exc import NoResultFound from sqlalchemy.exc import IntegrityError -from sqlalchemy.sql import and_ +from flask_sqlalchemy import SQLAlchemy -engine = create_engine(current_app.config['DB_URI']) +db = SQLAlchemy() -Base = declarative_base(bind = engine) - -class User(Base): +class User(db.Model): __tablename__ = 'users' - id = Column(Integer, primary_key = True) - username = Column(String, unique = True, index = True) - jab_id = Column(String(24), unique = True, index = True) - api_key_date = Column(DateTime, default = datetime.datetime.utcnow) - files = relation('File', backref = 'user', order_by = 'File.date.desc()') + id = db.Column(db.Integer, primary_key=True) + username = db.Column(db.String, unique=True, index=True) + jab_id = db.Column(db.String(24), unique=True, index=True) + api_key_date = db.Column(db.DateTime, default=datetime.datetime.utcnow) + files = db.relation('File', backref='user', order_by='File.date.desc()') def __init__(self, username, jab_id): self.username = username self.jab_id = jab_id -class UserSession(Base): +class UserSession(db.Model): __tablename__ = 'sessions' - id = Column(Integer, primary_key = True) - user_id = Column(Integer, ForeignKey('users.id'), index = True) - access_token = Column(String) - refresh_token = Column(String) - updated = Column(DateTime) + id = db.Column(db.Integer, primary_key=True) + user_id = db.Column(db.Integer, db.ForeignKey('users.id'), index=True) + access_token = db.Column(db.String) + refresh_token = db.Column(db.String) + updated = db.Column(db.DateTime) def __init__(self, user_id, access_token, refresh_token): self.user_id = user_id self.access_token = access_token self.refresh_token = refresh_token -class File(Base): +class File(db.Model): __tablename__ = 'files' - id = Column(Integer, primary_key = True) - hash = Column(String, unique = True, index = True) - filename = Column(String) - size = Column(BigInteger) - date = Column(DateTime) - user_id = Column(Integer, ForeignKey('users.id'), nullable = True) - ip = Column(String) - accessed = Column(DateTime) - scanned = Column(Boolean, nullable=False, default=False) - blocked_reason = Column(JSON) + id = db.Column(db.Integer, primary_key=True) + hash = db.Column(db.String, unique=True, index=True) + filename = db.Column(db.String) + size = db.Column(db.BigInteger) + date = db.Column(db.DateTime) + user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=True) + ip = db.Column(db.String) + accessed = db.Column(db.DateTime) + scanned = db.Column(db.Boolean, nullable=False, default=False) + blocked_reason = db.Column(db.JSON) def __init__(self, hash, filename, size, date, user_id = None, ip = None): self.hash = hash @@ -114,19 +109,3 @@ class File(Base): @property def exists(self): return os.path.exists(self.get_path()) - -Base.metadata.create_all() -Session = sessionmaker(bind = engine, autoflush = True, autocommit = False) - -@contextmanager -def session_scope(): - session = Session() - try: - session.expire_on_commit = False - yield session - session.commit() - except: - session.rollback() - raise - finally: - session.close() |