Files
HermesMessages/backend/app/modules/business/service.py

50 lines
1.7 KiB
Python
Raw Normal View History

from fastapi import HTTPException, status
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
from app.modules.business.models import Business, BusinessConfig
from app.modules.business.schemas import BusinessConfigUpdate, BusinessUpdate
async def get_business(db: AsyncSession, business_id: int) -> Business:
result = await db.execute(select(Business).where(Business.id == business_id))
business = result.scalar_one_or_none()
if not business:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Negocio no encontrado")
return business
async def update_business(
db: AsyncSession, business_id: int, data: BusinessUpdate
) -> Business:
business = await get_business(db, business_id)
for field, value in data.model_dump(exclude_none=True).items():
setattr(business, field, value)
await db.commit()
await db.refresh(business)
return business
async def get_business_config(db: AsyncSession, business_id: int) -> BusinessConfig:
result = await db.execute(
select(BusinessConfig).where(BusinessConfig.business_id == business_id)
)
config = result.scalar_one_or_none()
if not config:
config = BusinessConfig(business_id=business_id)
db.add(config)
await db.commit()
await db.refresh(config)
return config
async def update_business_config(
db: AsyncSession, business_id: int, data: BusinessConfigUpdate
) -> BusinessConfig:
config = await get_business_config(db, business_id)
for field, value in data.model_dump(exclude_none=True).items():
setattr(config, field, value)
await db.commit()
await db.refresh(config)
return config