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.
100 lines
3.1 KiB
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() |