"""
Data Access Layer
Automatically loads the correct data access module based on configuration
"""
import config

# Import the appropriate data access module based on config
if config.USE_DATABASE:
    print("Using SQLite database for data storage")
    from data_access_sqlite import (
        # User operations
        get_user_by_username,
        get_user_by_id,
        get_all_users,
        create_user,
        update_user,
        delete_user,
        toggle_user_active,
        change_user_password,
        # Product operations
        get_all_products,
        get_product_by_code,
        create_product,
        update_product,
        delete_product,
        # Location operations
        get_all_locations,
        get_location_by_code,
        # Product attributes operations
        get_product_attributes,
        update_product_attributes,
        # Utility functions
        commit,
        rollback
    )
else:
    print("Using JSON files for data storage")
    from data_access_json import (
        # User operations
        get_user_by_username,
        get_user_by_id,
        get_all_users,
        create_user,
        update_user,
        delete_user,
        toggle_user_active,
        change_user_password,
        # Product operations
        get_all_products,
        get_product_by_code,
        create_product,
        update_product,
        delete_product,
        # Location operations
        get_all_locations,
        get_location_by_code,
        # Product attributes operations
        get_product_attributes,
        update_product_attributes,
        # Utility functions
        commit,
        rollback
    )

# Re-export all functions so blueprints can do: from data_access import get_user_by_username
__all__ = [
    # User operations
    'get_user_by_username',
    'get_user_by_id',
    'get_all_users',
    'create_user',
    'update_user',
    'delete_user',
    'toggle_user_active',
    'change_user_password',
    # Product operations
    'get_all_products',
    'get_product_by_code',
    'create_product',
    'update_product',
    'delete_product',
    # Location operations
    'get_all_locations',
    'get_location_by_code',
    # Product attributes operations
    'get_product_attributes',
    'update_product_attributes',
    # Utility functions
    'commit',
    'rollback'
]
