the beginning of the idiots
This commit is contained in:
		
							
								
								
									
										53
									
								
								qwen/python/merchants_of_hope/api/v1/tenants.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								qwen/python/merchants_of_hope/api/v1/tenants.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
			
		||||
"""
 | 
			
		||||
Tenants API routes
 | 
			
		||||
"""
 | 
			
		||||
from fastapi import APIRouter, Depends, HTTPException, status
 | 
			
		||||
from typing import List
 | 
			
		||||
from pydantic import BaseModel
 | 
			
		||||
from sqlalchemy.orm import Session
 | 
			
		||||
 | 
			
		||||
from ..database import SessionLocal
 | 
			
		||||
from ..models import Tenant
 | 
			
		||||
from ..config.settings import settings
 | 
			
		||||
 | 
			
		||||
router = APIRouter()
 | 
			
		||||
 | 
			
		||||
# Pydantic models for tenants
 | 
			
		||||
class TenantCreate(BaseModel):
 | 
			
		||||
    name: str
 | 
			
		||||
    subdomain: str
 | 
			
		||||
 | 
			
		||||
class TenantResponse(BaseModel):
 | 
			
		||||
    id: int
 | 
			
		||||
    name: str
 | 
			
		||||
    subdomain: str
 | 
			
		||||
    is_active: bool
 | 
			
		||||
 | 
			
		||||
    class Config:
 | 
			
		||||
        from_attributes = True
 | 
			
		||||
 | 
			
		||||
@router.get("/", response_model=List[TenantResponse])
 | 
			
		||||
async def get_tenants(skip: int = 0, limit: int = 100, db: Session = Depends(SessionLocal)):
 | 
			
		||||
    """Get all tenants"""
 | 
			
		||||
    tenants = db.query(Tenant).offset(skip).limit(limit).all()
 | 
			
		||||
    return tenants
 | 
			
		||||
 | 
			
		||||
@router.get("/{tenant_id}", response_model=TenantResponse)
 | 
			
		||||
async def get_tenant(tenant_id: int, db: Session = Depends(SessionLocal)):
 | 
			
		||||
    """Get a specific tenant"""
 | 
			
		||||
    tenant = db.query(Tenant).filter(Tenant.id == tenant_id).first()
 | 
			
		||||
    if not tenant:
 | 
			
		||||
        raise HTTPException(status_code=404, detail="Tenant not found")
 | 
			
		||||
    return tenant
 | 
			
		||||
 | 
			
		||||
@router.post("/", response_model=TenantResponse)
 | 
			
		||||
async def create_tenant(tenant: TenantCreate, db: Session = Depends(SessionLocal)):
 | 
			
		||||
    """Create a new tenant"""
 | 
			
		||||
    if not settings.MULTI_TENANT_ENABLED:
 | 
			
		||||
        raise HTTPException(status_code=400, detail="Multi-tenant is not enabled")
 | 
			
		||||
    
 | 
			
		||||
    db_tenant = Tenant(**tenant.model_dump())
 | 
			
		||||
    db.add(db_tenant)
 | 
			
		||||
    db.commit()
 | 
			
		||||
    db.refresh(db_tenant)
 | 
			
		||||
    return db_tenant
 | 
			
		||||
		Reference in New Issue
	
	Block a user