aws-service-stack 0.17.240 → 0.17.242
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/exception/errors.js +1 -1
- package/dist/exception/errors.js.map +1 -1
- package/dist/exception/exception-handler.js +4 -0
- package/dist/exception/exception-handler.js.map +1 -1
- package/dist/utils/opensearch.utils.js +27 -17
- package/dist/utils/opensearch.utils.js.map +1 -1
- package/package.json +1 -1
package/dist/exception/errors.js
CHANGED
|
@@ -30,7 +30,7 @@ class ErrorHttp extends Error {
|
|
|
30
30
|
constructor(errorCodeMsg, errorMessage, errorData) {
|
|
31
31
|
super(errorData);
|
|
32
32
|
this.statusCode = errorCodeMsg.code;
|
|
33
|
-
this.message = errorMessage;
|
|
33
|
+
this.message = typeof errorMessage === "object" ? JSON.stringify(errorMessage) : errorMessage;
|
|
34
34
|
this.error = errorCodeMsg.error;
|
|
35
35
|
this.data = errorData;
|
|
36
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/exception/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,SAAU,SAAQ,KAAK;IAClC,IAAI,CAAS;IACb,OAAO,CAAS;IAChB,KAAK,CAAM;IACX,YAAY,IAAY,EAAE,OAAe,EAAE,YAAkB;QAC3D,KAAK,CAAC,YAAY,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AATD,8BASC;AAED,MAAa,aAAc,SAAQ,KAAK;IACtC,SAAS,CAAS;IAClB,OAAO,CAAM;IACb,YAAY,SAAiB,EAAE,OAAY,EAAE,YAAkB;QAC7D,KAAK,CAAC,YAAY,CAAC,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AARD,sCAQC;AAOD,MAAa,SAAU,SAAQ,KAAK;IAClC,UAAU,CAAS;IACnB,KAAK,CAAS;IACd,OAAO,CAAS;IAChB,IAAI,CAAM;IAEV,YAAY,YAA0B,EAAE,YAAkB,EAAE,SAAe;QACzE,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/exception/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,SAAU,SAAQ,KAAK;IAClC,IAAI,CAAS;IACb,OAAO,CAAS;IAChB,KAAK,CAAM;IACX,YAAY,IAAY,EAAE,OAAe,EAAE,YAAkB;QAC3D,KAAK,CAAC,YAAY,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AATD,8BASC;AAED,MAAa,aAAc,SAAQ,KAAK;IACtC,SAAS,CAAS;IAClB,OAAO,CAAM;IACb,YAAY,SAAiB,EAAE,OAAY,EAAE,YAAkB;QAC7D,KAAK,CAAC,YAAY,CAAC,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AARD,sCAQC;AAOD,MAAa,SAAU,SAAQ,KAAK;IAClC,UAAU,CAAS;IACnB,KAAK,CAAS;IACd,OAAO,CAAS;IAChB,IAAI,CAAM;IAEV,YAAY,YAA0B,EAAE,YAAkB,EAAE,SAAe;QACzE,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;QAC9F,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;IACxB,CAAC;CACF;AAbD,8BAaC;AAED,MAAa,eAAgB,SAAQ,KAAK;IACxC,UAAU,CAAS;IACnB,UAAU,CAAmB;IAC7B,KAAK,CAAM;IACX,OAAO,CAAM;IAEb,YAAY,UAAkB,EAAE,UAA4B,EAAE,YAAkB;QAC9E,KAAK,CAAC,YAAY,CAAC,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC;IAC9B,CAAC;CACF;AAZD,0CAYC;AAED,MAAa,qBAAsB,SAAQ,KAAK;IAC9C,YAAY,SAAiB;QAC3B,KAAK,CAAC,GAAG,SAAS,eAAe,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AALD,sDAKC","sourcesContent":["export class ErrorBase extends Error {\n code: number;\n message: string;\n error: any;\n constructor(code: number, message: string, errorContent?: any) {\n super(errorContent);\n this.code = code;\n this.message = message;\n }\n}\n\nexport class ErrorDynamoDB extends Error {\n tableName: string;\n command: any;\n constructor(tableName: string, command: any, errorContent?: any) {\n super(errorContent);\n this.tableName = tableName;\n this.command = command;\n }\n}\n\nexport interface ErrorCodeMsg {\n code: number;\n error: string;\n}\n\nexport class ErrorHttp extends Error {\n statusCode: number;\n error: string;\n message: string;\n data: any;\n\n constructor(errorCodeMsg: ErrorCodeMsg, errorMessage?: any, errorData?: any) {\n super(errorData);\n this.statusCode = errorCodeMsg.code;\n this.message = typeof errorMessage === \"object\" ? JSON.stringify(errorMessage) : errorMessage;\n this.error = errorCodeMsg.error;\n this.data = errorData;\n }\n}\n\nexport class ErrorValidation extends Error {\n entityName: string;\n validation: Map<string, any>;\n error: any;\n content: any;\n\n constructor(entityName: string, validation: Map<string, any>, errorContent?: any) {\n super(errorContent);\n this.entityName = entityName;\n this.validation = validation;\n this.content = errorContent;\n }\n}\n\nexport class MissingParameterError extends Error {\n constructor(paramName: string) {\n super(`${paramName} is required.`);\n this.name = \"MissingParameterError\";\n }\n}\n"]}
|
|
@@ -35,6 +35,10 @@ const errorHandlerHttp = (error) => {
|
|
|
35
35
|
responseMsg = `Resource not found: ${err.tableName}`;
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
+
else if (msg?.includes("search_phase_execution_exception")) {
|
|
39
|
+
response = httpStatus.BAD_REQUEST;
|
|
40
|
+
responseMsg = "OpenSearch: Cannot sort by text field — use '.keyword' instead.";
|
|
41
|
+
}
|
|
38
42
|
return {
|
|
39
43
|
statusCode: response.code,
|
|
40
44
|
content: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exception-handler.js","sourceRoot":"","sources":["../../src/exception/exception-handler.ts"],"names":[],"mappings":"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","sourcesContent":["import { ErrorDynamoDB, ErrorHttp, ErrorValidation } from \"./errors\";\n\nexport const errorHandlerHttp = (error: any) => {\n const httpStatus = HTTP;\n\n const msg = error?.message;\n\n let response = httpStatus.INTERNAL_SERVER_ERROR;\n let responseMsg = msg;\n let data = error?.data;\n\n if (error instanceof ErrorValidation) {\n response = httpStatus.BAD_REQUEST;\n response.error = response.error + \" - Validation Error\";\n // responseMsg = error.validation\n responseMsg = Object.fromEntries(error.validation.entries());\n data = error.content;\n } else if (error instanceof ErrorHttp) {\n response.code = error.statusCode;\n response.error = error.error;\n responseMsg = error.message;\n data = error.data;\n } else if (error instanceof ErrorDynamoDB) {\n const err = error as ErrorDynamoDB;\n if (msg.includes(\"ConditionalCheckFailedException\")) {\n response = httpStatus.CONFLICT;\n response.error = response.error + \" - DynamoDB Error\";\n responseMsg =\n `ConditionalCheckFailedException: by table: ${err.tableName}, command: ${err.command}, error: ` +\n JSON.stringify(err);\n } else if (msg.includes(\"ResourceNotFoundException\")) {\n response = httpStatus.NOT_FOUND;\n responseMsg = `Resource not found: ${err.tableName}`;\n }\n }\n\n return {\n statusCode: response.code,\n content: {\n error: response.error,\n message: responseMsg,\n data: data,\n },\n };\n};\n\nexport const HTTP = {\n // 1xx Informational\n CONTINUE: { error: \"Continue\", code: 100 },\n SWITCHING_PROTOCOLS: { error: \"Switching Protocols\", code: 101 },\n PROCESSING: { error: \"Processing\", code: 102 },\n\n // 2xx Success\n OK: { error: \"OK\", code: 200 },\n CREATED: { error: \"Created\", code: 201 },\n ACCEPTED: { error: \"Accepted\", code: 202 },\n NON_AUTHORITATIVE_INFORMATION: { error: \"Non-Authoritative Information\", code: 203 },\n NO_CONTENT: { error: \"No Content\", code: 204 },\n RESET_CONTENT: { error: \"Reset Content\", code: 205 },\n PARTIAL_CONTENT: { error: \"Partial Content\", code: 206 },\n\n // 3xx Redirection\n MULTIPLE_CHOICES: { error: \"Multiple Choices\", code: 300 },\n MOVED_PERMANENTLY: { error: \"Moved Permanently\", code: 301 },\n FOUND: { error: \"Found\", code: 302 },\n SEE_OTHER: { error: \"See Other\", code: 303 },\n NOT_MODIFIED: { error: \"Not Modified\", code: 304 },\n TEMPORARY_REDIRECT: { error: \"Temporary Redirect\", code: 307 },\n PERMANENT_REDIRECT: { error: \"Permanent Redirect\", code: 308 },\n\n // 4xx Client Errors\n BAD_REQUEST: { error: \"Bad Request\", code: 400 },\n UNAUTHORIZED: { error: \"Unauthorized\", code: 401 },\n PAYMENT_REQUIRED: { error: \"Payment Required\", code: 402 },\n FORBIDDEN: { error: \"Forbidden\", code: 403 },\n NOT_FOUND: { error: \"Not Found\", code: 404 },\n METHOD_NOT_ALLOWED: { error: \"Method Not Allowed\", code: 405 },\n NOT_ACCEPTABLE: { error: \"Not Acceptable\", code: 406 },\n PROXY_AUTHENTICATION_REQUIRED: { error: \"Proxy Authentication Required\", code: 407 },\n REQUEST_TIMEOUT: { error: \"Request Timeout\", code: 408 },\n CONFLICT: { error: \"Conflict\", code: 409 },\n GONE: { error: \"Gone\", code: 410 },\n LENGTH_REQUIRED: { error: \"Length Required\", code: 411 },\n PRECONDITION_FAILED: { error: \"Precondition Failed\", code: 412 },\n PAYLOAD_TOO_LARGE: { error: \"Payload Too Large\", code: 413 },\n URI_TOO_LONG: { error: \"URI Too Long\", code: 414 },\n UNSUPPORTED_MEDIA_TYPE: { error: \"Unsupported Media Type\", code: 415 },\n RANGE_NOT_SATISFIABLE: { error: \"Range Not Satisfiable\", code: 416 },\n EXPECTATION_FAILED: { error: \"Expectation Failed\", code: 417 },\n IM_A_TEAPOT: { error: \"I'm a teapot\", code: 418 },\n MISDIRECTED_REQUEST: { error: \"Misdirected Request\", code: 421 },\n UNPROCESSABLE_ENTITY: { error: \"Unprocessable Entity\", code: 422 },\n LOCKED: { error: \"Locked\", code: 423 },\n FAILED_DEPENDENCY: { error: \"Failed Dependency\", code: 424 },\n TOO_EARLY: { error: \"Too Early\", code: 425 },\n UPGRADE_REQUIRED: { error: \"Upgrade Required\", code: 426 },\n PRECONDITION_REQUIRED: { error: \"Precondition Required\", code: 428 },\n TOO_MANY_REQUESTS: { error: \"Too Many Requests\", code: 429 },\n REQUEST_HEADER_FIELDS_TOO_LARGE: { error: \"Request Header Fields Too Large\", code: 431 },\n UNAVAILABLE_FOR_LEGAL_REASONS: { error: \"Unavailable For Legal Reasons\", code: 451 },\n\n // 5xx Server Errors\n INTERNAL_SERVER_ERROR: { error: \"Internal Server Error\", code: 500 },\n NOT_IMPLEMENTED: { error: \"Not Implemented\", code: 501 },\n BAD_GATEWAY: { error: \"Bad Gateway\", code: 502 },\n SERVICE_UNAVAILABLE: { error: \"Service Unavailable\", code: 503 },\n GATEWAY_TIMEOUT: { error: \"Gateway Timeout\", code: 504 },\n HTTP_VERSION_NOT_SUPPORTED: { error: \"HTTP Version Not Supported\", code: 505 },\n VARIANT_ALSO_NEGOTIATES: { error: \"Variant Also Negotiates\", code: 506 },\n INSUFFICIENT_STORAGE: { error: \"Insufficient Storage\", code: 507 },\n LOOP_DETECTED: { error: \"Loop Detected\", code: 508 },\n NOT_EXTENDED: { error: \"Not Extended\", code: 510 },\n NETWORK_AUTHENTICATION_REQUIRED: { error: \"Network Authentication Required\", code: 511 },\n};\n"]}
|
|
1
|
+
{"version":3,"file":"exception-handler.js","sourceRoot":"","sources":["../../src/exception/exception-handler.ts"],"names":[],"mappings":"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","sourcesContent":["import { ErrorDynamoDB, ErrorHttp, ErrorValidation } from \"./errors\";\n\nexport const errorHandlerHttp = (error: any) => {\n const httpStatus = HTTP;\n\n const msg = error?.message;\n\n let response = httpStatus.INTERNAL_SERVER_ERROR;\n let responseMsg = msg;\n let data = error?.data;\n\n if (error instanceof ErrorValidation) {\n response = httpStatus.BAD_REQUEST;\n response.error = response.error + \" - Validation Error\";\n // responseMsg = error.validation\n responseMsg = Object.fromEntries(error.validation.entries());\n data = error.content;\n } else if (error instanceof ErrorHttp) {\n response.code = error.statusCode;\n response.error = error.error;\n responseMsg = error.message;\n data = error.data;\n } else if (error instanceof ErrorDynamoDB) {\n const err = error as ErrorDynamoDB;\n if (msg.includes(\"ConditionalCheckFailedException\")) {\n response = httpStatus.CONFLICT;\n response.error = response.error + \" - DynamoDB Error\";\n responseMsg =\n `ConditionalCheckFailedException: by table: ${err.tableName}, command: ${err.command}, error: ` +\n JSON.stringify(err);\n } else if (msg.includes(\"ResourceNotFoundException\")) {\n response = httpStatus.NOT_FOUND;\n responseMsg = `Resource not found: ${err.tableName}`;\n }\n } else if (msg?.includes(\"search_phase_execution_exception\")) {\n response = httpStatus.BAD_REQUEST;\n responseMsg = \"OpenSearch: Cannot sort by text field — use '.keyword' instead.\";\n }\n\n return {\n statusCode: response.code,\n content: {\n error: response.error,\n message: responseMsg,\n data: data,\n },\n };\n};\n\nexport const HTTP = {\n // 1xx Informational\n CONTINUE: { error: \"Continue\", code: 100 },\n SWITCHING_PROTOCOLS: { error: \"Switching Protocols\", code: 101 },\n PROCESSING: { error: \"Processing\", code: 102 },\n\n // 2xx Success\n OK: { error: \"OK\", code: 200 },\n CREATED: { error: \"Created\", code: 201 },\n ACCEPTED: { error: \"Accepted\", code: 202 },\n NON_AUTHORITATIVE_INFORMATION: { error: \"Non-Authoritative Information\", code: 203 },\n NO_CONTENT: { error: \"No Content\", code: 204 },\n RESET_CONTENT: { error: \"Reset Content\", code: 205 },\n PARTIAL_CONTENT: { error: \"Partial Content\", code: 206 },\n\n // 3xx Redirection\n MULTIPLE_CHOICES: { error: \"Multiple Choices\", code: 300 },\n MOVED_PERMANENTLY: { error: \"Moved Permanently\", code: 301 },\n FOUND: { error: \"Found\", code: 302 },\n SEE_OTHER: { error: \"See Other\", code: 303 },\n NOT_MODIFIED: { error: \"Not Modified\", code: 304 },\n TEMPORARY_REDIRECT: { error: \"Temporary Redirect\", code: 307 },\n PERMANENT_REDIRECT: { error: \"Permanent Redirect\", code: 308 },\n\n // 4xx Client Errors\n BAD_REQUEST: { error: \"Bad Request\", code: 400 },\n UNAUTHORIZED: { error: \"Unauthorized\", code: 401 },\n PAYMENT_REQUIRED: { error: \"Payment Required\", code: 402 },\n FORBIDDEN: { error: \"Forbidden\", code: 403 },\n NOT_FOUND: { error: \"Not Found\", code: 404 },\n METHOD_NOT_ALLOWED: { error: \"Method Not Allowed\", code: 405 },\n NOT_ACCEPTABLE: { error: \"Not Acceptable\", code: 406 },\n PROXY_AUTHENTICATION_REQUIRED: { error: \"Proxy Authentication Required\", code: 407 },\n REQUEST_TIMEOUT: { error: \"Request Timeout\", code: 408 },\n CONFLICT: { error: \"Conflict\", code: 409 },\n GONE: { error: \"Gone\", code: 410 },\n LENGTH_REQUIRED: { error: \"Length Required\", code: 411 },\n PRECONDITION_FAILED: { error: \"Precondition Failed\", code: 412 },\n PAYLOAD_TOO_LARGE: { error: \"Payload Too Large\", code: 413 },\n URI_TOO_LONG: { error: \"URI Too Long\", code: 414 },\n UNSUPPORTED_MEDIA_TYPE: { error: \"Unsupported Media Type\", code: 415 },\n RANGE_NOT_SATISFIABLE: { error: \"Range Not Satisfiable\", code: 416 },\n EXPECTATION_FAILED: { error: \"Expectation Failed\", code: 417 },\n IM_A_TEAPOT: { error: \"I'm a teapot\", code: 418 },\n MISDIRECTED_REQUEST: { error: \"Misdirected Request\", code: 421 },\n UNPROCESSABLE_ENTITY: { error: \"Unprocessable Entity\", code: 422 },\n LOCKED: { error: \"Locked\", code: 423 },\n FAILED_DEPENDENCY: { error: \"Failed Dependency\", code: 424 },\n TOO_EARLY: { error: \"Too Early\", code: 425 },\n UPGRADE_REQUIRED: { error: \"Upgrade Required\", code: 426 },\n PRECONDITION_REQUIRED: { error: \"Precondition Required\", code: 428 },\n TOO_MANY_REQUESTS: { error: \"Too Many Requests\", code: 429 },\n REQUEST_HEADER_FIELDS_TOO_LARGE: { error: \"Request Header Fields Too Large\", code: 431 },\n UNAVAILABLE_FOR_LEGAL_REASONS: { error: \"Unavailable For Legal Reasons\", code: 451 },\n\n // 5xx Server Errors\n INTERNAL_SERVER_ERROR: { error: \"Internal Server Error\", code: 500 },\n NOT_IMPLEMENTED: { error: \"Not Implemented\", code: 501 },\n BAD_GATEWAY: { error: \"Bad Gateway\", code: 502 },\n SERVICE_UNAVAILABLE: { error: \"Service Unavailable\", code: 503 },\n GATEWAY_TIMEOUT: { error: \"Gateway Timeout\", code: 504 },\n HTTP_VERSION_NOT_SUPPORTED: { error: \"HTTP Version Not Supported\", code: 505 },\n VARIANT_ALSO_NEGOTIATES: { error: \"Variant Also Negotiates\", code: 506 },\n INSUFFICIENT_STORAGE: { error: \"Insufficient Storage\", code: 507 },\n LOOP_DETECTED: { error: \"Loop Detected\", code: 508 },\n NOT_EXTENDED: { error: \"Not Extended\", code: 510 },\n NETWORK_AUTHENTICATION_REQUIRED: { error: \"Network Authentication Required\", code: 511 },\n};\n"]}
|
|
@@ -37,10 +37,16 @@ function calculatePagination(filter) {
|
|
|
37
37
|
function addSearchQuery(boolQuery, searchBy, searchKeyword) {
|
|
38
38
|
if (!searchBy || !searchKeyword || searchKeyword.trim() === "")
|
|
39
39
|
return;
|
|
40
|
+
// 1. Олон *-уудыг нэг * болгох
|
|
41
|
+
let cleanedKeyword = searchKeyword.replace(/\*+/g, "*").trim();
|
|
42
|
+
// 2. Хэрвээ keyword-ын төгсгөлд * байхгүй бол автоматаар * нэмэх
|
|
43
|
+
if (!cleanedKeyword.endsWith("*")) {
|
|
44
|
+
cleanedKeyword += "*";
|
|
45
|
+
}
|
|
40
46
|
const fields = Array.isArray(searchBy) ? searchBy : [searchBy];
|
|
41
47
|
const shouldBool = elastic_builder_1.default.boolQuery();
|
|
42
48
|
for (const field of fields) {
|
|
43
|
-
shouldBool.should(elastic_builder_1.default.wildcardQuery(field,
|
|
49
|
+
shouldBool.should(elastic_builder_1.default.wildcardQuery(field, cleanedKeyword).caseInsensitive(true));
|
|
44
50
|
}
|
|
45
51
|
shouldBool.minimumShouldMatch(1);
|
|
46
52
|
boolQuery.must(shouldBool);
|
|
@@ -113,24 +119,28 @@ function addDynamicFilters(boolQuery, filter) {
|
|
|
113
119
|
if (value === undefined || value === null || value === "" || specialFilterProps.includes(key))
|
|
114
120
|
continue;
|
|
115
121
|
log.debug(`dynamic filter:${key}=${value}`);
|
|
116
|
-
if (typeof value === "string"
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
122
|
+
if (typeof value === "string") {
|
|
123
|
+
if (value.includes("*")) {
|
|
124
|
+
boolQuery.filter(elastic_builder_1.default.wildcardQuery(key, value));
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
if (isValidDateString(value)) {
|
|
128
|
+
boolQuery.filter(elastic_builder_1.default.rangeQuery(key).gte(value));
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
if (value.includes(",")) {
|
|
132
|
+
const values = value.split(",").filter((v) => v.trim() !== "");
|
|
133
|
+
if (values.length > 0) {
|
|
134
|
+
boolQuery.filter(elastic_builder_1.default.termsQuery(`${key}.keyword`, values));
|
|
135
|
+
}
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
if (value === "true" || value === "false") {
|
|
139
|
+
boolQuery.filter(elastic_builder_1.default.wildcardQuery(key, value));
|
|
140
|
+
continue;
|
|
126
141
|
}
|
|
127
142
|
}
|
|
128
|
-
|
|
129
|
-
boolQuery.filter(elastic_builder_1.default.termQuery(`${key}`, value));
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
boolQuery.filter(elastic_builder_1.default.termQuery(`${key}.keyword`, value));
|
|
133
|
-
}
|
|
143
|
+
boolQuery.filter(elastic_builder_1.default.termQuery(`${key}.keyword`, value));
|
|
134
144
|
}
|
|
135
145
|
}
|
|
136
146
|
// Helper function to handle field selection
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opensearch.utils.js","sourceRoot":"","sources":["../../src/utils/opensearch.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import dayjs from \"dayjs\";\nimport { Filter, RangeFilter, removeEmptyFields } from \"../index\";\nimport esb from \"elastic-builder\";\n\n// Helper function to validate if a string is a proper date format\nfunction isValidDateString(value: string): boolean {\n // Only accept ISO date formats (YYYY-MM-DD) or ISO datetime formats\n const isoDatePattern = /^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}(\\.\\d{3})?Z?)?$/;\n if (!isoDatePattern.test(value)) {\n return false;\n }\n\n // Additional validation with dayjs - just check if it's a valid date\n const parsed = dayjs(value);\n return parsed.isValid();\n}\n\n// Helper function to calculate pagination\nfunction calculatePagination(filter: Filter): { from: number; size: number } {\n let queryFrom = 0;\n let querySize = 25;\n\n if (filter.page && filter.size) {\n queryFrom = (filter.page - 1) * filter.size;\n delete filter.page;\n }\n if (filter.size) {\n querySize = filter.size;\n delete filter.size;\n }\n\n return { from: queryFrom, size: querySize };\n}\n\nfunction addSearchQuery(boolQuery: any, searchBy?: string | string[], searchKeyword?: string) {\n if (!searchBy || !searchKeyword || searchKeyword.trim() === \"\") return;\n\n const fields: string[] = Array.isArray(searchBy) ? searchBy : [searchBy];\n\n const shouldBool = esb.boolQuery();\n for (const field of fields) {\n shouldBool.should(esb.wildcardQuery(field, `*${searchKeyword}*`).caseInsensitive(true));\n }\n shouldBool.minimumShouldMatch(1);\n\n boolQuery.must(shouldBool);\n}\n\n// Helper function to handle index filtering\nfunction addIndexFilter(boolQuery: any, indexName?: string, indexValue?: string): void {\n if ((indexName && indexValue && indexValue.trim() === \"true\") || (indexValue && indexValue.trim() === \"false\")) {\n boolQuery.filter(esb.termQuery(`${indexName}`, indexValue));\n } else if (indexName && indexValue && indexValue.trim() !== \"\") {\n boolQuery.filter(esb.termQuery(`${indexName}.keyword`, indexValue));\n }\n}\n\n// Helper function to create a range query for numbers\nfunction createNumberRangeQuery(fieldName: string, min?: number, max?: number): any {\n const rangeQuery = esb.rangeQuery(fieldName);\n if (min !== undefined) rangeQuery.gte(min);\n if (max !== undefined) rangeQuery.lte(max);\n return rangeQuery;\n}\n\n// Helper function to create a range query for dates\nfunction createDateRangeQuery(fieldName: string, min?: any, max?: any): any | null {\n const minDate = min ? dayjs(min).format(\"YYYY-MM-DD\") : undefined;\n const maxDate = max ? dayjs(max).format(\"YYYY-MM-DD\") : undefined;\n\n if (!minDate && !maxDate) return null;\n\n const rangeQuery = esb.rangeQuery(fieldName);\n if (minDate) rangeQuery.gte(minDate);\n if (maxDate) rangeQuery.lte(maxDate);\n return rangeQuery;\n}\n\n// Helper function to handle range filters\nfunction addRangeFilters(boolQuery: any, rangeFilters?: RangeFilter[]) {\n if (!rangeFilters || !Array.isArray(rangeFilters)) return;\n\n const validRangeFilters = rangeFilters.filter(\n (rangeFilter) =>\n (rangeFilter.minValue !== undefined || rangeFilter.maxValue !== undefined) &&\n rangeFilter.fieldName &&\n rangeFilter,\n );\n\n for (const rangeFilter of validRangeFilters) {\n const { fieldName, minValue: min, maxValue: max } = rangeFilter;\n const isNumberRange = typeof min === \"number\" || typeof max === \"number\";\n\n const rangeQuery = isNumberRange\n ? createNumberRangeQuery(fieldName, min as number, max as number)\n : createDateRangeQuery(fieldName, min, max);\n\n if (rangeQuery) {\n boolQuery.filter(rangeQuery);\n }\n }\n}\n\n// Helper function to handle dynamic field filtering\nfunction addDynamicFilters(boolQuery: any, filter: Filter): void {\n const specialFilterProps = [\n \"page\",\n \"size\",\n \"sort\",\n \"sortBy\",\n \"searchBy\",\n \"searchKeyword\",\n \"rangeFilters\",\n \"indexName\",\n \"indexValue\",\n \"fieldsExclude\",\n \"fieldsInclude\",\n ];\n\n for (const [key, value] of Object.entries(filter)) {\n if (value === undefined || value === null || value === \"\" || specialFilterProps.includes(key)) continue;\n\n log.debug(`dynamic filter:${key}=${value}`);\n\n if (typeof value === \"string\" && value.includes(\"*\")) {\n boolQuery.filter(esb.wildcardQuery(key, value));\n } else if (typeof value === \"string\" && isValidDateString(value)) {\n boolQuery.filter(esb.rangeQuery(key).gte(value));\n } else if (typeof value === \"string\" && value.includes(\",\")) {\n const values = value.split(\",\").filter((v) => v.trim() !== \"\");\n if (values.length > 0) {\n boolQuery.filter(esb.termsQuery(`${key}.keyword`, values));\n }\n } else if (typeof value === \"string\" && (value === \"true\" || value === \"false\")) {\n boolQuery.filter(esb.termQuery(`${key}`, value));\n } else {\n boolQuery.filter(esb.termQuery(`${key}.keyword`, value));\n }\n }\n}\n\n// Helper function to handle field selection\nfunction addFieldSelection(result: any, fieldsExclude?: string[], fieldsInclude?: string[]): void {\n if (fieldsExclude) {\n result._source_excludes = fieldsExclude;\n } else if (fieldsInclude) {\n result._source_includes = fieldsInclude;\n }\n}\n\nexport function buildQueryOS(filter: Filter): any {\n const { sort, sortBy, searchBy, searchKeyword, rangeFilters, indexName, indexValue, fieldsExclude, fieldsInclude } =\n filter;\n\n // Calculate pagination\n const { from, size } = calculatePagination(filter);\n\n // Build the main query\n const boolQuery = esb.boolQuery();\n\n addRangeFilters(boolQuery, rangeFilters);\n addSearchQuery(boolQuery, searchBy, searchKeyword);\n addIndexFilter(boolQuery, indexName, indexValue);\n addDynamicFilters(boolQuery, filter);\n\n // Create a request body and handle sorting\n const requestBody = esb.requestBodySearch().query(boolQuery);\n if (sortBy && sort) {\n requestBody.sort(esb.sort(sortBy, sort));\n }\n requestBody.from(from);\n requestBody.size(size);\n\n let result: any = {};\n\n result.body = requestBody.toJSON();\n\n addFieldSelection(result, fieldsExclude, fieldsInclude);\n\n result = removeEmptyFields(result);\n\n return result;\n}\n\n/**\n * All non-case sensitive rule accepted characters replaced with upper and lower case\n * а - [аА], б - []\n * */\nexport function toCaseInsensitive(value: string) {\n if (!value || typeof value !== \"string\") return value;\n\n return value.toLowerCase();\n}\nexport function toCaseInsensitiveArray(value: string[]) {\n if (!value) return value;\n\n if (Array.isArray(value)) {\n return value.map((v) => v.toLowerCase());\n }\n\n return value;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"opensearch.utils.js","sourceRoot":"","sources":["../../src/utils/opensearch.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import dayjs from \"dayjs\";\nimport { Filter, RangeFilter, removeEmptyFields } from \"../index\";\nimport esb from \"elastic-builder\";\n\n// Helper function to validate if a string is a proper date format\nfunction isValidDateString(value: string): boolean {\n // Only accept ISO date formats (YYYY-MM-DD) or ISO datetime formats\n const isoDatePattern = /^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}(\\.\\d{3})?Z?)?$/;\n if (!isoDatePattern.test(value)) {\n return false;\n }\n\n // Additional validation with dayjs - just check if it's a valid date\n const parsed = dayjs(value);\n return parsed.isValid();\n}\n\n// Helper function to calculate pagination\nfunction calculatePagination(filter: Filter): { from: number; size: number } {\n let queryFrom = 0;\n let querySize = 25;\n\n if (filter.page && filter.size) {\n queryFrom = (filter.page - 1) * filter.size;\n delete filter.page;\n }\n if (filter.size) {\n querySize = filter.size;\n delete filter.size;\n }\n\n return { from: queryFrom, size: querySize };\n}\n\nfunction addSearchQuery(boolQuery: any, searchBy?: string | string[], searchKeyword?: string) {\n if (!searchBy || !searchKeyword || searchKeyword.trim() === \"\") return;\n // 1. Олон *-уудыг нэг * болгох\n let cleanedKeyword = searchKeyword.replace(/\\*+/g, \"*\").trim();\n\n // 2. Хэрвээ keyword-ын төгсгөлд * байхгүй бол автоматаар * нэмэх\n if (!cleanedKeyword.endsWith(\"*\")) {\n cleanedKeyword += \"*\";\n }\n\n const fields: string[] = Array.isArray(searchBy) ? searchBy : [searchBy];\n\n const shouldBool = esb.boolQuery();\n for (const field of fields) {\n shouldBool.should(esb.wildcardQuery(field, cleanedKeyword).caseInsensitive(true));\n }\n shouldBool.minimumShouldMatch(1);\n\n boolQuery.must(shouldBool);\n}\n\n// Helper function to handle index filtering\nfunction addIndexFilter(boolQuery: any, indexName?: string, indexValue?: string): void {\n if ((indexName && indexValue && indexValue.trim() === \"true\") || (indexValue && indexValue.trim() === \"false\")) {\n boolQuery.filter(esb.termQuery(`${indexName}`, indexValue));\n } else if (indexName && indexValue && indexValue.trim() !== \"\") {\n boolQuery.filter(esb.termQuery(`${indexName}.keyword`, indexValue));\n }\n}\n\n// Helper function to create a range query for numbers\nfunction createNumberRangeQuery(fieldName: string, min?: number, max?: number): any {\n const rangeQuery = esb.rangeQuery(fieldName);\n if (min !== undefined) rangeQuery.gte(min);\n if (max !== undefined) rangeQuery.lte(max);\n return rangeQuery;\n}\n\n// Helper function to create a range query for dates\nfunction createDateRangeQuery(fieldName: string, min?: any, max?: any): any | null {\n const minDate = min ? dayjs(min).format(\"YYYY-MM-DD\") : undefined;\n const maxDate = max ? dayjs(max).format(\"YYYY-MM-DD\") : undefined;\n\n if (!minDate && !maxDate) return null;\n\n const rangeQuery = esb.rangeQuery(fieldName);\n if (minDate) rangeQuery.gte(minDate);\n if (maxDate) rangeQuery.lte(maxDate);\n return rangeQuery;\n}\n\n// Helper function to handle range filters\nfunction addRangeFilters(boolQuery: any, rangeFilters?: RangeFilter[]) {\n if (!rangeFilters || !Array.isArray(rangeFilters)) return;\n\n const validRangeFilters = rangeFilters.filter(\n (rangeFilter) =>\n (rangeFilter.minValue !== undefined || rangeFilter.maxValue !== undefined) &&\n rangeFilter.fieldName &&\n rangeFilter,\n );\n\n for (const rangeFilter of validRangeFilters) {\n const { fieldName, minValue: min, maxValue: max } = rangeFilter;\n const isNumberRange = typeof min === \"number\" || typeof max === \"number\";\n\n const rangeQuery = isNumberRange\n ? createNumberRangeQuery(fieldName, min as number, max as number)\n : createDateRangeQuery(fieldName, min, max);\n\n if (rangeQuery) {\n boolQuery.filter(rangeQuery);\n }\n }\n}\n\n// Helper function to handle dynamic field filtering\nfunction addDynamicFilters(boolQuery: any, filter: Filter): void {\n const specialFilterProps = [\n \"page\",\n \"size\",\n \"sort\",\n \"sortBy\",\n \"searchBy\",\n \"searchKeyword\",\n \"rangeFilters\",\n \"indexName\",\n \"indexValue\",\n \"fieldsExclude\",\n \"fieldsInclude\",\n ];\n\n for (const [key, value] of Object.entries(filter)) {\n if (value === undefined || value === null || value === \"\" || specialFilterProps.includes(key)) continue;\n\n log.debug(`dynamic filter:${key}=${value}`);\n\n if (typeof value === \"string\") {\n if (value.includes(\"*\")) {\n boolQuery.filter(esb.wildcardQuery(key, value));\n continue;\n }\n\n if (isValidDateString(value)) {\n boolQuery.filter(esb.rangeQuery(key).gte(value));\n continue;\n }\n\n if (value.includes(\",\")) {\n const values = value.split(\",\").filter((v) => v.trim() !== \"\");\n if (values.length > 0) {\n boolQuery.filter(esb.termsQuery(`${key}.keyword`, values));\n }\n continue;\n }\n\n if (value === \"true\" || value === \"false\") {\n boolQuery.filter(esb.wildcardQuery(key, value));\n continue;\n }\n }\n\n boolQuery.filter(esb.termQuery(`${key}.keyword`, value));\n }\n}\n\n// Helper function to handle field selection\nfunction addFieldSelection(result: any, fieldsExclude?: string[], fieldsInclude?: string[]): void {\n if (fieldsExclude) {\n result._source_excludes = fieldsExclude;\n } else if (fieldsInclude) {\n result._source_includes = fieldsInclude;\n }\n}\n\nexport function buildQueryOS(filter: Filter): any {\n const { sort, sortBy, searchBy, searchKeyword, rangeFilters, indexName, indexValue, fieldsExclude, fieldsInclude } =\n filter;\n\n // Calculate pagination\n const { from, size } = calculatePagination(filter);\n\n // Build the main query\n const boolQuery = esb.boolQuery();\n\n addRangeFilters(boolQuery, rangeFilters);\n addSearchQuery(boolQuery, searchBy, searchKeyword);\n addIndexFilter(boolQuery, indexName, indexValue);\n addDynamicFilters(boolQuery, filter);\n\n // Create a request body and handle sorting\n const requestBody = esb.requestBodySearch().query(boolQuery);\n if (sortBy && sort) {\n requestBody.sort(esb.sort(sortBy, sort));\n }\n requestBody.from(from);\n requestBody.size(size);\n\n let result: any = {};\n\n result.body = requestBody.toJSON();\n\n addFieldSelection(result, fieldsExclude, fieldsInclude);\n\n result = removeEmptyFields(result);\n\n return result;\n}\n\n/**\n * All non-case sensitive rule accepted characters replaced with upper and lower case\n * а - [аА], б - []\n * */\nexport function toCaseInsensitive(value: string) {\n if (!value || typeof value !== \"string\") return value;\n\n return value.toLowerCase();\n}\nexport function toCaseInsensitiveArray(value: string[]) {\n if (!value) return value;\n\n if (Array.isArray(value)) {\n return value.map((v) => v.toLowerCase());\n }\n\n return value;\n}\n"]}
|