@@ -17,25 +17,30 @@ type OSClient = *opensearch.Client
1717type OSAggregation = osquery.Aggregation
1818type OSResponse = * opensearchapi.SearchResp
1919
20- var camelCaseToSnakeCaseFields = map [string ]string {
21- "publicationYear" : "publication_year" ,
22- "relatedIdentifiers" : "related_identifiers" ,
23- "relatedItems" : "related_items" ,
24- "rightsList" : "rights_list" ,
25- "fundingReferences" : "funding_references" ,
26- "geoLocations" : "geo_locations" ,
27- "version:" : "version_info:" ,
28- "landingPage" : "landing_page" ,
29- "contentUrl" : "content_url" ,
30- "citationCount" : "citation_count" ,
31- "viewCount" : "view_count" ,
32- "downloadCount" : "download_count" ,
33- "schemaVersion" : "schema_version" ,
34- "/" : "\\ /" ,
20+ var camelCaseToSnakeCaseFields = []struct {
21+ camelCase string
22+ snakeCase string
23+ }{
24+ {"publicationYear" , "publication_year" },
25+ {"relatedIdentifiers" , "related_identifiers" },
26+ {"relatedItems" , "related_items" },
27+ {"rightsList" , "rights_list" },
28+ {"fundingReferences" , "funding_references" },
29+ {"geoLocations" , "geo_locations" },
30+ {"version:" , "version_info:" },
31+ {"landingPage" , "landing_page" },
32+ {"contentUrl" , "content_url" },
33+ {"citationCount" , "citation_count" },
34+ {"viewCount" , "view_count" },
35+ {"downloadCount" , "download_count" },
36+ {"schemaVersion" , "schema_version" },
3537}
3638
37- var camelCaseToSnakeCaseFieldsRegex = map [string ]string {
38- `(publisher\.)(name|publisherIdentifier|publisherIdentifierScheme|schemeUri|lang)` : "publisher_obj.$2" ,
39+ var camelCaseToSnakeCaseFieldsRegex = []struct {
40+ regex string
41+ snakeCase string
42+ }{
43+ {`(publisher\.)(name|publisherIdentifierScheme|publisherIdentifier|schemeUri|lang)` , "publisher_obj.$2" },
3944}
4045
4146func InitOpenSearch () OSClient {
@@ -83,14 +88,16 @@ func BuildBaseQuery(clientId string, providerId string, consortiumId string, que
8388
8489func buildQueryString (query string ) * osquery.CustomQueryMap {
8590 // support camel case for certain fields for consistency with lupo
86- for camelCase , snakeCase := range camelCaseToSnakeCaseFields {
87- query = strings .ReplaceAll (query , camelCase , snakeCase )
91+ for _ , field := range camelCaseToSnakeCaseFields {
92+ query = strings .ReplaceAll (query , field . camelCase , field . snakeCase )
8893 }
8994
90- for regex , field := range camelCaseToSnakeCaseFieldsRegex {
91- query = regexp .MustCompile (regex ).ReplaceAllString (query , field )
95+ for _ , field := range camelCaseToSnakeCaseFieldsRegex {
96+ query = regexp .MustCompile (field . regex ).ReplaceAllString (query , field . snakeCase )
9297 }
9398
99+ query = strings .ReplaceAll (query , "/" , "\\ /" )
100+
94101 queryString := map [string ]any {
95102 "query_string" : map [string ]any {
96103 "query" : query ,
0 commit comments