Skip to content

Instantly share code, notes, and snippets.

@ScrimForever
Created January 24, 2025 22:59
Show Gist options
  • Save ScrimForever/6568083bc841b8fc3bbe446c42a28240 to your computer and use it in GitHub Desktop.
Save ScrimForever/6568083bc841b8fc3bbe446c42a28240 to your computer and use it in GitHub Desktop.
async def generic_create_element(
self, element_model: Base, element, session: Session
):
filters = [
getattr(element_model, key) == value for key, value in element.items()
]
stmt = select(element_model).where(*filters)
try:
# Check if the element exists
result = await session.execute(stmt)
existing_element = result.scalar_one()
return JSONResponse(
content={"mensagem": "Elemento já existe"},
status_code=HTTP_409_CONFLICT,
)
except NoResultFound:
# If it doesn't exist, create a new instance
new_element = element_model(**element)
session.add(new_element)
await session.commit()
await session.refresh(new_element)
return new_element
except Exception as e:
await session.rollback()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment