#!/usr/bin/env python
# -*- coding: utf-8  -*-
################################################################################
#
#  Rattail -- Retail Software Framework
#  Copyright © 2010-2012 Lance Edgar
#
#  This file is part of Rattail.
#
#  Rattail is free software: you can redistribute it and/or modify it under the
#  terms of the GNU Affero General Public License as published by the Free
#  Software Foundation, either version 3 of the License, or (at your option)
#  any later version.
#
#  Rattail is distributed in the hope that it will be useful, but WITHOUT ANY
#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
#  FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for
#  more details.
#
#  You should have received a copy of the GNU Affero General Public License
#  along with Rattail.  If not, see <http://www.gnu.org/licenses/>.
#
################################################################################

"""
``rattail.db`` -- Database Stuff
"""

import edbob
# from edbob.db.extensions import activate_extension

import rattail


def init(config):
    """
    Initialize the Rattail database framework.
    """

    from rattail.db.extension import model
    edbob.graft(rattail, model)

    from rattail.db.extension import enum
    edbob.graft(rattail, enum)


# def init_database(engine, session):
#     """
#     Initialize an ``edbob`` database for use with Rattail.
#     """

#     activate_extension('rattail', engine)

#     columns = [
#         ('F01',         'UPC',                  'GPC(14)'),
#         ('F02',         'Description',          'CHAR(20)'),
#         ('F03',         'Department Number',    'NUMBER(4,0)'),
#         ('F22',         'Size',                 'CHAR(30)'),
#         ('F155',        'Brand',                'CHAR(30)'),
#         ('F238',        'Department Name',      'CHAR(30)'),
#         ]

#     for name, disp, dtype in columns:
#         session.add(rattail.SilColumn(
#                 sil_name=name, display=disp, data_type=dtype))
#         session.flush()

#     dictionaries = [
#         ('DEPT_DCT', 'Department', [
#                 ('F03', True),
#                 'F238',
#                 ]),
#         ('ITEM_DCT', 'Product', [
#                 ('F01', True),
#                 'F02',
#                 'F03',
#                 'F22',
#                 'F155',
#                 ]),
#         # ('PRICE_DCT', 'Price', []),
#         # ('FCOST_DCT', 'Future Cost', []),
#         # ('FSPRICE_DCT', 'Future Sale Price', []),
#         # ('CLASS_GROUP', 'Scale Class / Group', []),
#         # ('NUTRITION', 'Scale Nutrition', []),
#         # ('SCALE_TEXT', 'Scale Text', []),
#         # ('VENDOR_DCT', 'Vendor', []),
#         ]

#     for name, desc, cols in dictionaries:
#         bd = rattail.BatchDictionary(name=name, description=desc)
#         for col in cols:
#             key = False
#             if not isinstance(col, basestring):
#                 col, key = col
#             q = session.query(rattail.SilColumn)
#             q = q.filter(rattail.SilColumn.sil_name == col)
#             col = q.one()
#             bd.columns.append(
#                 rattail.BatchDictionaryColumn(sil_column=col, key=key))
#         session.add(bd)
#         session.flush()
