Files
plantillas-proyectos/backend/api/v1/modules/a76/item_presets/services.py

64 lines
2.0 KiB
Python

from typing import List, Optional
from sqlalchemy.orm import Session
from .models import ItemPreset
from .dto import ItemPresetCreate, ItemPresetUpdate
def get_presets(db: Session, tenant_id: int, company_id: int) -> List[ItemPreset]:
"""Get all presets for a specific company and tenant"""
return db.query(ItemPreset).filter(
ItemPreset.tenant_id == tenant_id,
ItemPreset.company_id == company_id
).all()
def get_preset_by_id(db: Session, preset_id: int, tenant_id: int, company_id: int) -> Optional[ItemPreset]:
"""Get a specific preset by ID"""
return db.query(ItemPreset).filter(
ItemPreset.id == preset_id,
ItemPreset.tenant_id == tenant_id,
ItemPreset.company_id == company_id
).first()
def create_preset(db: Session, tenant_id: int, company_id: int, data: ItemPresetCreate) -> ItemPreset:
"""Create a new item preset"""
new_preset = ItemPreset(
tenant_id=tenant_id,
company_id=company_id,
name=data.name,
description=data.description,
items=data.items
)
db.add(new_preset)
db.commit()
db.refresh(new_preset)
return new_preset
def update_preset(
db: Session,
preset_id: int,
tenant_id: int,
company_id: int,
data: ItemPresetUpdate
) -> Optional[ItemPreset]:
"""Update an existing item preset"""
preset = get_preset_by_id(db, preset_id, tenant_id, company_id)
if not preset:
return None
update_data = data.model_dump(exclude_unset=True)
for key, value in update_data.items():
setattr(preset, key, value)
db.commit()
db.refresh(preset)
return preset
def delete_preset(db: Session, preset_id: int, tenant_id: int, company_id: int) -> bool:
"""Delete an item preset"""
preset = get_preset_by_id(db, preset_id, tenant_id, company_id)
if not preset:
return False
db.delete(preset)
db.commit()
return True