if hasattr(metadata, 'custom_indexes') and metadata.custom_indexes:
indexes = metadata.custom_indexes
expressions = []
for index in indexes:
if index.get('unique', False):
fields = index['fields']
query = {}
for field in fields:
query[field] = data.get(field, None)
expressions.append(query)
if hasattr(metadata, 'unique_indexes') and metadata.unique_indexes:
indexes = metadata.unique_indexes
expressions = []
for index in indexes:
query = {}
for field in index:
query[field] = data.get(field, None)
expressions.append(query)
model = Model.query.find({'$or': expressions}).first()