Untitled
unknown
plain_text
a year ago
2.8 kB
9
Indexable
from sqlalchemy import update, select
@mutation
def update_field_details(
self, info: Info, input: List[UpdateFieldDetailsInput]
) -> UpdateFieldDetailsMutationPayload:
try:
current_user = info.context.current_user.login
updated_field_details_ids = []
for field_detail in input:
# Initialize the base update statement
stmt = update(FieldDetails).where(FieldDetails.id == field_detail.id)
# Determine which fields to update based on the field type
if field_detail.type in ["Text Box", "Text Area"]:
# Update only the field_options for Text Box or Text Area
stmt = stmt.values(
options=field_detail.options,
updated_by=current_user,
updated_date=datetime.now(),
)
elif field_detail.type in ["Select", "Multi-select"]:
# Update field_format and validation_id for Select or Multi-select
# Fetch the validation ID from the mdm_validation table
validation_stmt = select([mdm_validation.c.id]).where(
mdm_validation.c.validation_type == field_detail.validation_type
)
validation_result = info.context.session.execute(validation_stmt).first()
if validation_result:
validation_id = validation_result[0]
else:
raise ValueError(f"Validation type '{field_detail.validation_type}' not found.")
stmt = stmt.values(
field_format=field_detail.field_format,
validation_id=validation_id,
updated_by=current_user,
updated_date=datetime.now(),
)
# Execute the update statement
info.context.session.execute(stmt)
updated_field_details_ids.append(field_detail.id)
# Commit the changes
info.context.session.commit()
# Fetch and return the updated field details
updated_field_details = (
info.context.session.query(FieldDetails)
.filter(FieldDetails.id.in_(updated_field_details_ids))
.all()
)
return UpdateFieldDetailsMutationPayload(
updated_field_details=updated_field_details,
success=True,
message="Field details updated successfully",
)
except Exception as e:
info.context.session.rollback()
return UpdateFieldDetailsMutationPayload(
updated_field_details=[],
success=False,
message=f"Update failed: {str(e)}",
)
Editor is loading...
Leave a Comment