From 409b0beb957e56566c718ffe7f95f0d1ebc5ed91 Mon Sep 17 00:00:00 2001 From: Mothana Date: Thu, 24 Jul 2025 13:25:33 +0400 Subject: [PATCH] storage process serialization of typeorm "And" find operator --- src/services/storage/db/serializationHelpers.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/services/storage/db/serializationHelpers.ts b/src/services/storage/db/serializationHelpers.ts index 95b6c0f6..21dfbd2f 100644 --- a/src/services/storage/db/serializationHelpers.ts +++ b/src/services/storage/db/serializationHelpers.ts @@ -1,4 +1,4 @@ -import { FindOperator, LessThan, MoreThan, LessThanOrEqual, MoreThanOrEqual, Equal, Like, ILike, Between, In, Any, IsNull, Not, FindOptionsWhere } from 'typeorm'; +import { FindOperator, LessThan, MoreThan, LessThanOrEqual, MoreThanOrEqual, Equal, Like, ILike, Between, In, Any, IsNull, Not, FindOptionsWhere, And } from 'typeorm'; export type WhereCondition = FindOptionsWhere | FindOptionsWhere[] type SerializedFindOperator = { @@ -11,7 +11,7 @@ export function serializeFindOperator(operator: FindOperator): SerializedFi return { _type: 'FindOperator', type: operator['type'], - value: operator['value'], + value: Array.isArray(operator['value']) ? operator["value"].map(serializeFindOperator) : operator["value"], }; } @@ -41,6 +41,11 @@ export function deserializeFindOperator(serialized: SerializedFindOperator): Fin return IsNull(); case 'not': return Not(deserializeFindOperator(serialized.value)); + case 'and': + if (serialized.value.length !== 2) { + throw new Error("Typeorm and operator with more than 2 arguments not supported"); + } + return And(deserializeFindOperator(serialized.value[0]), deserializeFindOperator(serialized.value[1])); default: throw new Error(`Unknown FindOperator type: ${serialized.type}`); }