Add subcription feature 6
This commit is contained in:
@@ -606,3 +606,75 @@ class TenantRepository(TenantBaseRepository):
|
||||
customer_id=customer_id,
|
||||
error=str(e))
|
||||
raise DatabaseError(f"Failed to get tenant by customer_id: {str(e)}")
|
||||
|
||||
async def get_user_primary_tenant(self, user_id: str) -> Optional[Tenant]:
|
||||
"""
|
||||
Get the primary tenant for a user (the tenant they own)
|
||||
|
||||
Args:
|
||||
user_id: User ID to find primary tenant for
|
||||
|
||||
Returns:
|
||||
Tenant object if found, None otherwise
|
||||
"""
|
||||
try:
|
||||
logger.debug("Getting primary tenant for user", user_id=user_id)
|
||||
|
||||
# Query for tenant where user is the owner
|
||||
query = select(Tenant).where(Tenant.owner_id == user_id)
|
||||
|
||||
result = await self.session.execute(query)
|
||||
tenant = result.scalar_one_or_none()
|
||||
|
||||
if tenant:
|
||||
logger.debug("Found primary tenant for user",
|
||||
user_id=user_id,
|
||||
tenant_id=str(tenant.id))
|
||||
return tenant
|
||||
else:
|
||||
logger.debug("No primary tenant found for user", user_id=user_id)
|
||||
return None
|
||||
|
||||
except Exception as e:
|
||||
logger.error("Error getting primary tenant for user",
|
||||
user_id=user_id,
|
||||
error=str(e))
|
||||
raise DatabaseError(f"Failed to get primary tenant for user: {str(e)}")
|
||||
|
||||
async def get_any_user_tenant(self, user_id: str) -> Optional[Tenant]:
|
||||
"""
|
||||
Get any tenant that the user has access to (via tenant_members)
|
||||
|
||||
Args:
|
||||
user_id: User ID to find accessible tenants for
|
||||
|
||||
Returns:
|
||||
Tenant object if found, None otherwise
|
||||
"""
|
||||
try:
|
||||
logger.debug("Getting any accessible tenant for user", user_id=user_id)
|
||||
|
||||
# Query for tenant members where user has access
|
||||
from app.models.tenants import TenantMember
|
||||
|
||||
query = select(Tenant).join(
|
||||
TenantMember, Tenant.id == TenantMember.tenant_id
|
||||
).where(TenantMember.user_id == user_id)
|
||||
|
||||
result = await self.session.execute(query)
|
||||
tenant = result.scalar_one_or_none()
|
||||
|
||||
if tenant:
|
||||
logger.debug("Found accessible tenant for user",
|
||||
user_id=user_id,
|
||||
tenant_id=str(tenant.id))
|
||||
return tenant
|
||||
else:
|
||||
logger.debug("No accessible tenants found for user", user_id=user_id)
|
||||
return None
|
||||
|
||||
except Exception as e:
|
||||
logger.error("Error getting accessible tenant for user",
|
||||
user_id=user_id,
|
||||
error=str(e))
|
||||
raise DatabaseError(f"Failed to get accessible tenant for user: {str(e)}")
|
||||
|
||||
Reference in New Issue
Block a user