You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
stashr_image_thumbnailer/database.py

100 lines
3.1 KiB

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""-------------------------------------------------------------------------------------------
-- IMPORTS
-------------------------------------------------------------------------------------------"""
""" --- HUEY IMPORT --- """
""" --- PYTHON IMPORTS --- """
import os
from os.path import dirname, abspath
""" --- STASHR DEPENDENCY IMPORTS --- """
""" --- STASHR CORE IMPORTS --- """
from stashr import log
from stashr import database as stashrdb
""" --- FLASK EXTENSION IMPORTS --- """
""" --- SQLALCHEMY IMPORTS --- """
from sqlalchemy import *
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import *
""" --- CREATE LOGGER --- """
""" --- STASHR PLUGIN IMPORTS --- """
""" --- CREATE LOGGER --- """
logger = log.stashr_logger(__name__)
""" --- CREATE SQLITE ENGINE --- """
db_path = os.path.join(dirname(abspath(__file__)), 'database.db')
engine = create_engine('sqlite:///{0}'.format(db_path),
connect_args={'check_same_thread': False, 'timeout': 15},
echo=False)
Base = declarative_base()
from marshmallow_sqlalchemy import ModelSchema, SQLAlchemyAutoSchema, SQLAlchemySchema, auto_field
from marshmallow import fields
from marshmallow_sqlalchemy.fields import Nested
"""-------------------------------------------------------------------------------------------
-- DATABASE
-------------------------------------------------------------------------------------------"""
class Images(Base):
__tablename__ = 'images'
image_id = Column(Integer, primary_key=True)
image_type = Column(String)
image_type_id = Column(Integer)
image_filename = Column(String)
image_path = Column(String)
image_original_size = Column(Integer)
image_processed_size = Column(Integer)
image_original_width = Column(Integer)
image_original_height = Column(Integer)
image_processed = Column(Boolean, server_default='0')
"""-------------------------------------------------------------------------------------------
-- DATABASE SCHEMAS
-------------------------------------------------------------------------------------------"""
class ImagesSchema(SQLAlchemyAutoSchema):
class Meta:
model = Images
"""-------------------------------------------------------------------------------------------
-- DATABASE DEFINITION
-------------------------------------------------------------------------------------------"""
Session = sessionmaker(bind=engine)
session = Session()
"""-------------------------------------------------------------------------------------------
-- DATABASE FUNCTIONS
-------------------------------------------------------------------------------------------"""
""" --- DATABASE MIGRATION --- """
def migrate_database():
# Check for new database tables
# Check for new table columns
pass
""" --- CHECK DATABASE --- """
if not os.path.exists(db_path):
logger.info('Creating Thumbnailer Database')
Base.metadata.create_all(engine)
else:
logger.info('Thumbnailer Database Exists')
migrate_database()