"""
import logging
from peewee import DoesNotExist
from database.database_config import db_conn
"""
#logger = logging.getLogger(__name__)
[docs]def get_record_by_field(model_class, field_name, value):
"""Retrieve a record by a specific field."""
record = None
try:
with db_conn:
query = model_class.select().where(getattr(model_class, field_name) == value)
record = query.get()
except DoesNotExist:
return record
return record
[docs]def create_record(model_class, data_to_be_inserted):
"""Create a new record in the database."""
record = None
try:
with db_conn.atomic() as current_transaction:
record = model_class.create(**data_to_be_inserted)
except Exception as error:
current_transaction.rollback()
logger.error(error, exc_info=True)
return record
[docs]def update_record(model_class, record_id, data_to_be_updated, **kwargs):
"""Update a record."""
record = None
try:
record = model_class.get_by_id(record_id)
try:
with db_conn.atomic() as current_transaction:
for field, value in data_to_be_updated.items():
setattr(record, field, value)
record.save()
except IntegrityError as e:
logger.error(f"Error updating record {e}", exc_info=True)
except DoesNotExist:
logger.error(f"Record with {record_id} in the model {model_class} does not exist.")
return record