# app/modules/tenancy/models/__init__.py
"""
Tenancy module database models.

This is the canonical location for tenancy module models including:
- Platform, Company, Vendor, User management
- Admin platform assignments
- Vendor platform memberships
- Platform module configuration
- Vendor domains
"""

# Import models from other modules FIRST to resolve string-based relationship references.
# These imports are NOT re-exported, just ensure models are registered with SQLAlchemy
# before the tenancy models are loaded.
#
# Relationship being resolved:
# - Platform.admin_menu_configs -> "AdminMenuConfig" (in core module)
#
# NOTE: MarketplaceImportJob relationships have been moved to the marketplace module.
# Optional modules own their relationships to core models, not vice versa.
from app.modules.core.models import AdminMenuConfig  # noqa: F401

from app.modules.tenancy.models.admin import (
    AdminAuditLog,
    AdminSession,
    AdminSetting,
    ApplicationLog,
    PlatformAlert,
)
from app.modules.tenancy.models.admin_platform import AdminPlatform
from app.modules.tenancy.models.company import Company
from app.modules.tenancy.models.platform import Platform
from app.modules.tenancy.models.platform_module import PlatformModule
from app.modules.tenancy.models.user import User, UserRole
from app.modules.tenancy.models.vendor import Role, Vendor, VendorUser, VendorUserType
from app.modules.tenancy.models.vendor_domain import VendorDomain
from app.modules.tenancy.models.vendor_platform import VendorPlatform

__all__ = [
    # Admin models
    "AdminAuditLog",
    "AdminSession",
    "AdminSetting",
    "ApplicationLog",
    "PlatformAlert",
    # Admin-Platform junction
    "AdminPlatform",
    # Company
    "Company",
    # Platform
    "Platform",
    "PlatformModule",
    # User
    "User",
    "UserRole",
    # Vendor
    "Vendor",
    "VendorUser",
    "VendorUserType",
    "Role",
    # Vendor configuration
    "VendorDomain",
    "VendorPlatform",
]
