import uuid
from datetime import datetime, timezone
from pymongo.asynchronous.database import AsyncDatabase
from app.models.tenant import TenantCreate

async def create_tenant(db: AsyncDatabase, tenant_data: TenantCreate) -> dict:
    site_id = f"site_{uuid.uuid4().hex[:12]}"
    now = datetime.now(timezone.utc)
    
    tenant_doc = {
        "siteId": site_id,
        "domain": tenant_data.domain,
        "name": tenant_data.name,
        "createdAt": now
    }
    
    await db["tenants"].insert_one(tenant_doc)
    return tenant_doc

async def get_tenant_by_site_id(db: AsyncDatabase, site_id: str) -> dict | None:
    tenant = await db["tenants"].find_one({"siteId": site_id})
    if not tenant and site_id == "site_demo_123":
        now = datetime.now(timezone.utc)
        demo_doc = {
            "siteId": "site_demo_123",
            "domain": "127.0.0.1:5500",
            "name": "Local Demo Store",
            "createdAt": now
        }
        await db["tenants"].insert_one(demo_doc)
        return demo_doc
    return tenant


async def get_tenant_by_domain(db: AsyncDatabase, domain: str) -> dict | None:
    return await db["tenants"].find_one({"domain": domain})
