2024-09-16 14:03:05 -04:00
|
|
|
"""
|
|
|
|
Copyright 2024, Zep Software, Inc.
|
|
|
|
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
you may not use this file except in compliance with the License.
|
|
|
|
You may obtain a copy of the License at
|
|
|
|
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
See the License for the specific language governing permissions and
|
|
|
|
limitations under the License.
|
|
|
|
"""
|
|
|
|
|
2024-08-27 16:18:01 -04:00
|
|
|
from datetime import datetime
|
|
|
|
|
|
|
|
from neo4j import time as neo4j_time
|
|
|
|
|
|
|
|
|
|
|
|
def parse_db_date(neo_date: neo4j_time.DateTime | None) -> datetime | None:
|
|
|
|
return neo_date.to_native() if neo_date else None
|
2024-09-26 16:12:38 -04:00
|
|
|
|
|
|
|
|
|
|
|
def lucene_sanitize(query: str) -> str:
|
|
|
|
# Escape special characters from a query before passing into Lucene
|
|
|
|
# + - && || ! ( ) { } [ ] ^ " ~ * ? : \
|
|
|
|
escape_map = str.maketrans(
|
|
|
|
{
|
|
|
|
'+': r'\+',
|
|
|
|
'-': r'\-',
|
|
|
|
'&': r'\&',
|
|
|
|
'|': r'\|',
|
|
|
|
'!': r'\!',
|
|
|
|
'(': r'\(',
|
|
|
|
')': r'\)',
|
|
|
|
'{': r'\{',
|
|
|
|
'}': r'\}',
|
|
|
|
'[': r'\[',
|
|
|
|
']': r'\]',
|
|
|
|
'^': r'\^',
|
|
|
|
'"': r'\"',
|
|
|
|
'~': r'\~',
|
|
|
|
'*': r'\*',
|
|
|
|
'?': r'\?',
|
|
|
|
':': r'\:',
|
|
|
|
'\\': r'\\',
|
|
|
|
}
|
|
|
|
)
|
|
|
|
|
|
|
|
sanitized = query.translate(escape_map)
|
|
|
|
return sanitized
|