@qrvey/data-persistence 0.5.8 → 0.5.9-bundled

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.
Files changed (29) hide show
  1. package/dist/cjs/index.js +3 -1
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/services/crud.service.js +2 -2
  4. package/dist/cjs/services/crud.service.js.map +1 -1
  5. package/dist/cjs/services/crudFactory.service.js +5 -44
  6. package/dist/cjs/services/crudFactory.service.js.map +1 -1
  7. package/dist/cjs/services/cruds/dynamodb/dynamoDbCrud.service.js +6 -7
  8. package/dist/cjs/services/cruds/dynamodb/dynamoDbCrud.service.js.map +1 -1
  9. package/dist/cjs/services/cruds/index.js +19 -0
  10. package/dist/cjs/services/cruds/index.js.map +1 -0
  11. package/dist/cjs/services/cruds/postgresql/postgreSqlClient.service.js +21 -21
  12. package/dist/cjs/services/cruds/postgresql/postgreSqlClient.service.js.map +1 -1
  13. package/dist/cjs/services/cruds/postgresql/postgreSqlCrud.service.js +4 -2
  14. package/dist/cjs/services/cruds/postgresql/postgreSqlCrud.service.js.map +1 -1
  15. package/dist/cjs/services/cruds/postgresql/query.service.js +2 -2
  16. package/dist/cjs/services/cruds/postgresql/query.service.js.map +1 -1
  17. package/dist/esm/index.d.mts +3 -2
  18. package/dist/esm/index.mjs +1799 -14
  19. package/dist/esm/index.mjs.map +1 -1
  20. package/dist/types/index.d.ts +3 -2
  21. package/package.json +5 -19
  22. package/dist/esm/chunk-2H6RO6ZL.mjs +0 -56
  23. package/dist/esm/chunk-2H6RO6ZL.mjs.map +0 -1
  24. package/dist/esm/chunk-2OYWEFNZ.mjs +0 -105
  25. package/dist/esm/chunk-2OYWEFNZ.mjs.map +0 -1
  26. package/dist/esm/dynamoDbCrud.service-NRSGRPDQ.mjs +0 -796
  27. package/dist/esm/dynamoDbCrud.service-NRSGRPDQ.mjs.map +0 -1
  28. package/dist/esm/postgreSqlCrud.service-AD2CHR2Z.mjs +0 -857
  29. package/dist/esm/postgreSqlCrud.service-AD2CHR2Z.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/services/cruds/dynamodb/dynamoDbClient.service.ts","../../src/services/cruds/dynamodb/queryBuilderCondition.service.ts","../../src/services/cruds/dynamodb/queryBuilder.service.ts","../../src/services/cruds/dynamodb/dynamoDbCrud.service.ts"],"names":["_a","_b"],"mappings":"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","file":"dynamoDbCrud.service-NRSGRPDQ.mjs","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { DynamoDBClient } from '@aws-sdk/client-dynamodb';\nimport {\n DynamoDBDocumentClient,\n GetCommand,\n QueryCommand,\n PutCommand,\n UpdateCommand,\n DeleteCommand,\n GetCommandInput,\n QueryCommandInput,\n PutCommandInput,\n UpdateCommandInput,\n DeleteCommandInput,\n QueryCommandOutput,\n ScanCommandInput,\n ScanCommand,\n BatchWriteCommandInput,\n BatchWriteCommand,\n} from '@aws-sdk/lib-dynamodb';\nimport { IFilter } from '../../../interfaces';\n\nconst AWS_REGION = process.env.AWS_DEFAULT_REGION;\n\n/**\n * Ref:\n * - https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html\n * - https://www.fernandomc.com/posts/eight-examples-of-fetching-data-from-dynamodb-with-node/\n */\nexport default class DynamoDbClientService {\n private tableName: string;\n protected dynamoDBClient: DynamoDBDocumentClient;\n\n constructor(tableName: string) {\n if (!tableName)\n throw new Error(\n 'The \"tableName\" is required to use a DynamoDbClientService.',\n );\n this.tableName = tableName;\n const client = new DynamoDBClient({ region: AWS_REGION });\n this.dynamoDBClient = DynamoDBDocumentClient.from(client, {\n marshallOptions: {\n removeUndefinedValues: true,\n },\n });\n }\n\n /**\n * Get an item by key\n * @param {Object} keyObject - Ex: { jobId: 1234 }\n * @param {GetCommandInput} options\n */\n public async getByKey(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n keyObject: Record<string, any>,\n options: Partial<GetCommandInput> = {},\n ) {\n const params: GetCommandInput = {\n TableName: this.tableName,\n Key: keyObject,\n ...options,\n };\n const result = await this.dynamoDBClient.send(new GetCommand(params));\n return result.Item;\n }\n\n /**\n * Query a table\n * @param {QueryCommandInput} options\n */\n public async query(\n options: Omit<QueryCommandInput, 'TableName'> = {},\n ): Promise<Omit<QueryCommandOutput, '$metadata'>> {\n const params: QueryCommandInput = {\n TableName: this.tableName,\n ...options,\n };\n const result: Partial<QueryCommandOutput> =\n await this.dynamoDBClient.send(new QueryCommand(params));\n\n if (result.$metadata) delete result.$metadata;\n return result;\n }\n\n /**\n * Scan a table\n * @param {ScanInput} options\n */\n public async scan(\n input: ScanCommandInput,\n ): Promise<Omit<QueryCommandOutput, '$metadata'>> {\n const params: ScanCommandInput = {\n ...input,\n TableName: this.tableName,\n };\n\n const command = new ScanCommand(params);\n const response: Partial<QueryCommandOutput> =\n await this.dynamoDBClient.send(command);\n if (response.$metadata) delete response.$metadata;\n return response;\n }\n\n /**\n * Create/Replace a item object\n * To take care:\n * - https://stackoverflow.com/questions/43667229/difference-between-dynamodb-putitem-vs-updateitem\n * @param {Object} input\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public async put(input: Record<string, any>) {\n const params: PutCommandInput = {\n TableName: this.tableName,\n Item: input,\n ReturnValues: 'NONE',\n };\n return await this.dynamoDBClient.send(new PutCommand(params));\n }\n\n /**\n * Update a item object\n * To take care:\n * - https://stackoverflow.com/questions/43667229/difference-between-dynamodb-putitem-vs-updateitem\n * @param {Object} keyObject - Ex: { jobId: 1234 }\n * @param {UpdateCommandInput} updateObject\n */\n public async update(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n keyObject: Record<string, any>,\n options: Partial<UpdateCommandInput> = {},\n ) {\n const params: UpdateCommandInput = {\n TableName: this.tableName,\n Key: keyObject,\n ReturnValues: 'NONE',\n ...options,\n };\n return await this.dynamoDBClient.send(new UpdateCommand(params));\n }\n\n /**\n * Delete/Remove an item object\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public async remove(keyObject: Record<string, any>) {\n const params: DeleteCommandInput = {\n TableName: this.tableName,\n Key: keyObject,\n ReturnValues: 'NONE',\n };\n return await this.dynamoDBClient.send(new DeleteCommand(params));\n }\n\n public batchWrittenPut(data: Record<string, any>) {\n const putRequests = data.map((item: any) => ({\n PutRequest: {\n Item: item,\n },\n }));\n const params = {\n RequestItems: {\n [this.tableName]: putRequests,\n },\n } as BatchWriteCommandInput;\n const insertCommand = new BatchWriteCommand(params);\n return this.dynamoDBClient.send(insertCommand);\n }\n\n private buildDeleteRequestKeys(filters: IFilter[]) {\n const deleteRequestKeys: any = {};\n filters.forEach((filter) => {\n deleteRequestKeys[filter.attribute] = filter.value;\n });\n return deleteRequestKeys;\n }\n\n async batchRemove(filterGroups: IFilter[][]): Promise<void> {\n if (!filterGroups?.length) return;\n\n const deleteRequests = filterGroups.map((filterGroup: IFilter[]) => ({\n DeleteRequest: {\n Key: this.buildDeleteRequestKeys(filterGroup),\n },\n }));\n\n const params = {\n RequestItems: {\n [this.tableName]: deleteRequests,\n },\n } as BatchWriteCommandInput;\n\n await this.dynamoDBClient.send(new BatchWriteCommand(params));\n }\n\n public async updateExpressions(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n keyObject: Record<string, any>,\n options: Partial<UpdateCommandInput> = {},\n ) {\n const params: UpdateCommandInput = {\n TableName: this.tableName,\n Key: keyObject,\n ...options,\n };\n\n return await this.dynamoDBClient.send(new UpdateCommand(params));\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { QueryCommandInput } from '@aws-sdk/client-dynamodb';\nimport { UpdateCommandInput } from '@aws-sdk/lib-dynamodb';\nimport { IQueryBuilder } from '../../../interfaces/queryBuilder.interface';\nimport { METHOD_TO_QUERY } from '../../../helpers/queryHelpers';\nimport { IQueryBuilderCondition } from '../../../interfaces/queryBuilderCondition.interface';\n\nexport default class QueryBuilderConditionService\n implements IQueryBuilderCondition\n{\n private query;\n private command: Pick<\n QueryCommandInput,\n | 'FilterExpression'\n | 'KeyConditionExpression'\n | 'ExpressionAttributeNames'\n | 'ExpressionAttributeValues'\n > &\n Pick<UpdateCommandInput, 'UpdateExpression'>;\n private queryFrom: METHOD_TO_QUERY | undefined;\n private tempKey: string = '';\n private tempLogicOperator: string | null = null;\n private config: any;\n private wheres: string[] = [];\n private filters: string[] = [];\n private updates: string[] = [];\n private attributeNames: Record<string, string> = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private attributeValues: Record<string, any> = {};\n\n constructor(query: IQueryBuilder) {\n this.query = query;\n this.command = {};\n }\n\n public get() {\n this.build();\n return this.command;\n }\n\n public setKey(key: string) {\n this.tempKey = key;\n return this;\n }\n setTmpLogicOp(logicOp: string) {\n this.tempLogicOperator = logicOp;\n return this;\n }\n\n setConfig(config: any) {\n this.config = config;\n return this;\n }\n\n public from(methodName: METHOD_TO_QUERY) {\n this.queryFrom = methodName;\n return this;\n }\n\n eq(keyValue: string) {\n const { key, value } = this.generateKeyValue(keyValue);\n let expression: any = `${key} = ${value}`;\n if (this.tempLogicOperator)\n expression = { expression, logicOperator: this.tempLogicOperator, config: this.config };\n this.setExpression(expression);\n return this.query;\n }\n\n notEq(keyValue: string) {\n const { key, value } = this.generateKeyValue(keyValue);\n let expression: any = `${key} <> ${value}`;\n if (this.tempLogicOperator)\n expression = { expression, logicOperator: this.tempLogicOperator, config: this.config };\n this.setExpression(expression);\n return this.query;\n }\n\n contains(keyValue: string) {\n const { key, value } = this.generateKeyValue(keyValue);\n let expression: any = `contains(${key}, ${value})`;\n if (this.tempLogicOperator)\n expression = { expression, logicOperator: this.tempLogicOperator, config: this.config };\n this.setExpression(expression);\n return this.query;\n }\n\n notContains(keyValue: string) {\n const { key, value } = this.generateKeyValue(keyValue);\n let expression: any = `NOT contains(${key}, ${value})`;\n if (this.tempLogicOperator)\n expression = { expression, logicOperator: this.tempLogicOperator, config: this.config };\n this.setExpression(expression);\n return this.query;\n }\n\n in(keyValue: any) {\n const keyValues = Array.isArray(keyValue) ? keyValue : [keyValue];\n const { key, value } = this.generateKeyValue(keyValues);\n let expression: any = `${key} IN (${value})`;\n if (this.tempLogicOperator)\n expression = { expression, logicOperator: this.tempLogicOperator, config: this.config };\n this.setExpression(expression);\n return this.query;\n }\n\n beginsWith(keyValue: string) {\n const { key, value } = this.generateKeyValue(keyValue);\n let expression: any = `begins_with(${key}, ${value})`;\n if (this.tempLogicOperator)\n expression = { expression, logicOperator: this.tempLogicOperator, config: this.config };\n this.setExpression(expression);\n return this.query;\n }\n\n project(keyValue: string): string {\n const key = `#${keyValue}`;\n this.attributeNames[key] = keyValue;\n return key;\n }\n\n gt(keyValue: any) {\n const { key, value } = this.generateKeyValue(keyValue);\n let expression: any = `${key} > ${value}`;\n if (this.tempLogicOperator)\n expression = { expression, logicOperator: this.tempLogicOperator, config: this.config };\n this.setExpression(expression);\n return this.query;\n }\n\n gte(keyValue: any) {\n const { key, value } = this.generateKeyValue(keyValue);\n let expression: any = `${key} >= ${value}`;\n if (this.tempLogicOperator)\n expression = { expression, logicOperator: this.tempLogicOperator, config: this.config };\n this.setExpression(expression);\n return this.query;\n }\n\n lte(keyValue: any) {\n const { key, value } = this.generateKeyValue(keyValue);\n let expression: any = `${key} <= ${value}`;\n if (this.tempLogicOperator)\n expression = { expression, logicOperator: this.tempLogicOperator, config: this.config };\n this.setExpression(expression);\n return this.query;\n }\n\n lt(keyValue: any) {\n const { key, value } = this.generateKeyValue(keyValue);\n let expression: any = `${key} < ${value}`;\n if (this.tempLogicOperator)\n expression = { expression, logicOperator: this.tempLogicOperator, config: this.config };\n this.setExpression(expression);\n return this.query;\n }\n\n attribute_exists(keyValue: string) {\n const { key } = this.generateKeyValue(keyValue, null, true);\n let expression: any = `attribute_exists(${key})`;\n if (this.tempLogicOperator)\n expression = { expression, logicOperator: this.tempLogicOperator, config: this.config };\n this.setExpression(expression);\n return this.query;\n }\n\n attribute_not_exists(keyValue: string) {\n const { key } = this.generateKeyValue(keyValue, null, true);\n let expression: any = `attribute_not_exists(${key})`;\n if (this.tempLogicOperator)\n expression = { expression, logicOperator: this.tempLogicOperator, config: this.config };\n this.setExpression(expression);\n return this.query;\n }\n\n between(keyValues: any) {\n const isValidValues =\n Array.isArray(keyValues) && keyValues?.length === 2;\n if (!isValidValues)\n throw new Error(\n 'The value for between filter operator should be an Array with 2 values.',\n );\n\n const { key, value } = this.generateKeyValue(keyValues, ' AND');\n let expression: any = `${key} between ${value}`;\n if (this.tempLogicOperator)\n expression = { expression, logicOperator: this.tempLogicOperator, config: this.config };\n this.setExpression(expression);\n return this.query;\n }\n\n private setExpression(expression: string): void {\n switch (this.queryFrom) {\n case METHOD_TO_QUERY.filter:\n this.filters.push(expression);\n break;\n case METHOD_TO_QUERY.update:\n this.updates.push(expression);\n break;\n default:\n this.wheres.push(expression);\n break;\n }\n }\n\n private generateKeyValue(\n value: string[] | string,\n separatorCharacter: string | null = ',',\n omitAttributeValues: boolean = false,\n ): {\n key: string;\n value: string;\n } {\n const keyExpression = `#${this.tempKey}1`;\n\n this.attributeNames[keyExpression] = this.tempKey;\n\n if (Array.isArray(value)) {\n const valueExpressions = value.map((val, index) => {\n let valueExpression = `:${this.tempKey}${index + 1}1`;\n for (const [i] of Object.entries(this.attributeValues)) {\n if (i === valueExpression) valueExpression += '1';\n }\n this.attributeValues[valueExpression] = val;\n return valueExpression;\n });\n return {\n key: keyExpression,\n value: valueExpressions.join(`${separatorCharacter} `),\n };\n } else {\n let valueExpression = `:${this.tempKey}1`;\n if (valueExpression in this.attributeValues) {\n for (const [index] of Object.entries(this.attributeValues)) {\n if (index === valueExpression) valueExpression += '1';\n }\n }\n if (!omitAttributeValues)\n this.attributeValues[valueExpression] = value;\n return { key: keyExpression, value: valueExpression };\n }\n }\n\n private build(): void {\n if (this.wheres.length > 0) {\n const keyConditionExpression = this.wheres.join(' AND ');\n this.command['KeyConditionExpression'] = keyConditionExpression;\n }\n if (this.filters.length > 0) {\n let filterExpression = '';\n\n this.filters?.forEach((filter: any, index) => {\n if (filter?.logicOperator) {\n if (filter?.config?.openExpression) {\n filterExpression = filterExpression.replace(/\\s+(AND|OR)\\s*$/, ` ${filter.config.parentKey} (`);\n if (filterExpression === '') filterExpression += '('\n filterExpression += `${filter.expression} ${filter.logicOperator} `;\n } else if (filter?.config?.closeExpression) {\n filterExpression += `${filter.expression}) ${filter.config.parentKey} `; \n } else {\n filterExpression += `${filter.expression} ${filter.logicOperator} `;\n }\n }\n });\n filterExpression = filterExpression.replace(/\\s+(AND|OR)\\s*$/, '');\n this.command['FilterExpression'] = filterExpression;\n }\n if (this.updates.length > 0) {\n const filterExpression = this.updates.join(', ');\n this.command['UpdateExpression'] = `SET ${filterExpression}`;\n }\n if (Object.values(this.attributeNames).length > 0)\n this.command['ExpressionAttributeNames'] = this.attributeNames;\n\n if (Object.values(this.attributeValues).length > 0)\n this.command['ExpressionAttributeValues'] = this.attributeValues;\n }\n}\n","import { QueryCommandInput, ScanCommandInput } from '@aws-sdk/client-dynamodb';\nimport { IQueryBuilderCondition } from '../../../interfaces/queryBuilderCondition.interface';\nimport QueryBuilderConditionService from './queryBuilderCondition.service';\nimport { METHOD_TO_QUERY } from '../../../helpers/queryHelpers';\nimport { IQueryBuilder } from '../../../interfaces/queryBuilder.interface';\nimport { AGGREGATE_FUNCTIONS } from '../../../utils/constants';\n\nexport default class QueryBuilderService implements IQueryBuilder {\n private command: Omit<QueryCommandInput & ScanCommandInput, 'TableName'>;\n private condition: IQueryBuilderCondition;\n\n constructor(private useScan = false) {\n this.command = {};\n\n this.condition = new QueryBuilderConditionService(this);\n }\n\n get() {\n const condition = this.condition.get();\n return { ...this.command, ...condition };\n }\n\n limit(num: number): IQueryBuilder {\n this.command.Limit = num;\n return this;\n }\n\n usingIndex(indexName: string): IQueryBuilder {\n this.command.IndexName = indexName;\n return this;\n }\n\n ascending(): IQueryBuilder {\n if (!this.useScan) this.command.ScanIndexForward = true;\n return this;\n }\n\n descending(): IQueryBuilder {\n if (!this.useScan) this.command.ScanIndexForward = false;\n return this;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n startKey(lastEvaluatedKey: Record<string, any>): IQueryBuilder {\n this.command.ExclusiveStartKey = lastEvaluatedKey;\n return this;\n }\n\n projection(fields: string[] = []) {\n if (!fields.length) return this;\n\n const expression: string[] = [];\n fields.forEach((field) => {\n const key = this.condition.project(field);\n expression.push(key);\n });\n this.command.ProjectionExpression = expression.join(',');\n return this;\n }\n\n where(keyName: string): IQueryBuilderCondition {\n this.condition\n .setKey(keyName)\n .setTmpLogicOp(null)\n .from(METHOD_TO_QUERY.where);\n return this.condition;\n }\n\n filter(\n keyName: string,\n logicOperator: string = 'AND',\n config?: any\n ): IQueryBuilderCondition {\n this.condition\n .setKey(keyName)\n .setTmpLogicOp(logicOperator)\n .setConfig(config)\n .from(METHOD_TO_QUERY.filter);\n return this.condition;\n }\n\n update(attribute: Record<string, string>): IQueryBuilder {\n for (const [key, value] of Object.entries(attribute)) {\n this.condition.setKey(key).from(METHOD_TO_QUERY.update);\n this.condition.eq(value);\n }\n return this;\n }\n\n consistentRead(consistentRead: boolean): IQueryBuilder {\n this.command.ConsistentRead = consistentRead;\n return this;\n }\n\n count(): IQueryBuilder {\n this.command.Select = AGGREGATE_FUNCTIONS.COUNT;\n return this;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport DynamoDbClientService from './dynamoDbClient.service';\nimport QueryBuilderService from './queryBuilder.service';\n\nimport {\n AGGREGATE_FUNCTIONS,\n DYNAMODB_OPERATORS,\n FILTER_OPERATOR_MAP,\n DYNAMO_DB_UPDATE_ACTIONS,\n} from '../../../utils/constants';\nimport {\n ICompositeFilter,\n ICreateMultipleResponse,\n ICrudService,\n IFilter,\n IFindOptions,\n IFindPagination,\n IRemoveOptions,\n IUpdateExpressions,\n IUpdateExpressionsOptions,\n} from '../../../interfaces';\nimport { CrudSchema } from '../../../schemas/crudSchema';\nimport {\n findIdColumnName,\n getPrimaryKeyColumns,\n getTableName,\n} from '../../../helpers/tableHelper';\nimport { PersistenceErrorWrapper } from '../../../helpers/errorHelper';\nimport {\n QueryCommandInput,\n QueryCommandOutput,\n ScanCommandInput,\n} from '@aws-sdk/lib-dynamodb';\n\nexport class DynamoDbCrudService<T> implements ICrudService<T> {\n private dynamoDbClientService: DynamoDbClientService;\n\n constructor(private tableSchema: typeof CrudSchema) {\n this.dynamoDbClientService = new DynamoDbClientService(this.tableName);\n }\n\n private get tableName(): string {\n return getTableName(this.tableSchema.table);\n }\n\n private get idColumnName(): string | undefined {\n return findIdColumnName(this.tableSchema.columns);\n }\n\n private get defaultPrimaryKeys(): string[] {\n return getPrimaryKeyColumns(this.tableSchema.columns);\n }\n\n async create(data: T | T[]): Promise<T | ICreateMultipleResponse> {\n if (Array.isArray(data)) {\n const response =\n await this.dynamoDbClientService.batchWrittenPut(data);\n return {\n unprocessedItems: response.UnprocessedItems ?? [],\n };\n } else {\n await this.dynamoDbClientService.put(data as Record<string, any>);\n return data as T;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars\n runQuery(queryCommand: any): Promise<any> {\n throw new Error('Method not implemented.');\n }\n\n find(options: IFindOptions = {}): Promise<any> {\n const query = new QueryBuilderService(options.useScan);\n\n if (options.index?.indexName)\n query.usingIndex(options.index?.indexName);\n\n this.applySorting(query, options.sorting, options.index?.indexName);\n this.applyPagination(query, options.pagination);\n\n if (options.consistentRead)\n query.consistentRead(options.consistentRead);\n\n if (options.fields) query.projection(options.fields);\n\n this.applyFilters(query, options);\n\n if (options.aggregateFunction === AGGREGATE_FUNCTIONS.COUNT)\n query.count();\n\n return this.fetchResults(\n query.get(),\n options.pagination?.limit,\n options.useScan,\n ).then((res: any) => {\n const pagination: IFindPagination = {};\n if (res.lastEvaluatedKey) pagination.from = res.lastEvaluatedKey;\n if (options.pagination?.limit)\n pagination.limit = options.pagination?.limit;\n return {\n items: res.items,\n pagination,\n count: res.count,\n };\n });\n }\n\n async fetchResults(\n command: ScanCommandInput | QueryCommandInput,\n limit: number = 100,\n useScan: boolean = false,\n ): Promise<unknown> {\n let results: unknown[] = [];\n let lastEvaluatedKey: Record<string, unknown> = {};\n let rowsCount = 0;\n\n do {\n const result = await this.fetchBatch(\n command,\n useScan,\n lastEvaluatedKey,\n );\n const rows = result.Items ?? [];\n results = results.concat(rows);\n lastEvaluatedKey = result.LastEvaluatedKey ?? {};\n rowsCount += result.Count || rows.length;\n } while (rowsCount < limit && this.isNotEmptyObject(lastEvaluatedKey));\n\n const encryptedLastEvaluatedKey = this.isNotEmptyObject(\n lastEvaluatedKey,\n )\n ? this.encryptPaginationKey(lastEvaluatedKey)\n : null;\n return {\n items: results,\n lastEvaluatedKey: encryptedLastEvaluatedKey,\n count: rowsCount,\n };\n }\n\n async fetchBatch(\n command: ScanCommandInput | QueryCommandInput,\n useScan: boolean,\n lastEvaluatedKey: Record<string, unknown>,\n ): Promise<Partial<QueryCommandOutput>> {\n if (this.isNotEmptyObject(lastEvaluatedKey))\n command.ExclusiveStartKey = lastEvaluatedKey;\n\n const result = await (useScan\n ? this.dynamoDbClientService.scan(command)\n : this.dynamoDbClientService.query(command));\n\n if (command.Select !== AGGREGATE_FUNCTIONS.COUNT) {\n command.Limit = (command.Limit ?? 0) - (result.Items?.length ?? 0);\n }\n\n return result;\n }\n\n applyPagination(\n query: QueryBuilderService,\n pagination: IFindPagination | undefined,\n ) {\n if (pagination?.limit) query.limit(pagination.limit);\n if (pagination?.from)\n query.startKey(this.decryptPaginationKey(pagination.from));\n }\n\n async findAll(\n options: IFindOptions = {},\n allResults: any[] = [],\n rowsCount: number = 0,\n ): Promise<any> {\n const { items, pagination, count } = await this.find(options);\n allResults.push(...items);\n rowsCount += count;\n\n if (pagination?.from)\n await this.findAll({ ...options, pagination }, allResults);\n\n return {\n items: allResults,\n pagination: null,\n count: rowsCount,\n };\n }\n\n async findCount(options: IFindOptions = {}): Promise<number> {\n const findOptions = {\n ...options,\n aggregateFunction: AGGREGATE_FUNCTIONS.COUNT,\n };\n if (options.pagination?.from) {\n return this.find(findOptions).then((res) => res.count);\n } else {\n return this.findAll(findOptions).then((res) => res.count);\n }\n }\n\n buildFindItemQuery(options: IFindOptions): QueryBuilderService {\n const query = new QueryBuilderService();\n\n if (options.index?.indexName) query.usingIndex(options.index.indexName);\n\n this.applyFilters(query, options);\n query.projection(options.fields);\n query.limit(1);\n\n return query;\n }\n\n findItem(options: IFindOptions): Promise<T | null> {\n const query = this.buildFindItemQuery(options);\n return this.dynamoDbClientService.query(query.get()).then((result) => {\n if (result.Items?.length) return result.Items[0] as T;\n if (options.throwErrorIfNull) throw new Error('NOT_FOUND');\n return null;\n });\n }\n\n applyWhereFilter(query: QueryBuilderService, filter: IFilter) {\n const operator =\n FILTER_OPERATOR_MAP[\n filter.operator?.toUpperCase() ?? DYNAMODB_OPERATORS.EQUAL\n ];\n (query.where(filter.attribute) as any)[operator](filter.value);\n }\n\n applyFilterFilter(\n query: QueryBuilderService,\n filter: IFilter,\n logicOperator: string = 'AND',\n config?: any,\n ) {\n const operator =\n FILTER_OPERATOR_MAP[\n filter.operator?.toUpperCase() ?? DYNAMODB_OPERATORS.EQUAL\n ];\n (query.filter(filter.attribute, logicOperator, config) as any)[\n operator\n ](filter.value);\n }\n\n applyFilters(query: QueryBuilderService, options: IFindOptions) {\n if (Array.isArray(options.filters)) {\n this.applySimpleFilters(query, options);\n } else {\n this.applyCompoundFilters(query, options);\n }\n }\n\n applySimpleFilters(query: QueryBuilderService, options: IFindOptions) {\n const queryIndexColumns = options.index?.columns ?? [];\n const defaultWhereProperties = this.defaultPrimaryKeys;\n\n const whereProperties: string[] = queryIndexColumns?.length\n ? queryIndexColumns\n : defaultWhereProperties;\n const filters = options.filters as IFilter[];\n filters.forEach((filter: IFilter) => {\n const isWhereProperty = whereProperties.includes(filter.attribute);\n isWhereProperty && !options.useScan\n ? this.applyWhereFilter(query, filter)\n : this.applyFilterFilter(query, filter);\n });\n }\n\n applyCompoundFilters(query: QueryBuilderService, options: IFindOptions) {\n if (!options.filters) return;\n this.buildFilterExpression(query, options);\n }\n\n buildFilterExpression(\n query: QueryBuilderService,\n options: IFindOptions,\n parentKey?: string,\n ) {\n const compositeFilters = options.filters as ICompositeFilter;\n const queryIndexColumns = options.index?.columns || [];\n const defaultWhereProperties = this.defaultPrimaryKeys;\n\n const whereProperties = queryIndexColumns?.length\n ? queryIndexColumns\n : defaultWhereProperties;\n\n for (const [key, value] of Object.entries(compositeFilters)) {\n value.forEach(\n (filter: IFilter | ICompositeFilter, index: number) => {\n const isCompositeFilter = 'OR' in filter || 'AND' in filter;\n if (isCompositeFilter) {\n const newOptions = {\n ...options,\n filters: filter,\n };\n this.buildFilterExpression(query, newOptions, key);\n } else {\n const simpleFilter = filter as IFilter;\n const isWhereProperty = whereProperties.includes(\n simpleFilter.attribute,\n );\n let config;\n if (parentKey) {\n config = {\n parentKey,\n openExpression: index === 0,\n closeExpression: index === value.length - 1,\n };\n }\n\n isWhereProperty && !options.useScan\n ? this.applyWhereFilter(query, simpleFilter)\n : this.applyFilterFilter(\n query,\n simpleFilter,\n key,\n config,\n );\n }\n },\n );\n }\n }\n\n applySorting(query: QueryBuilderService, sorting: any, sortIndex?: string) {\n if (sorting?.length) {\n if (sortIndex) query.usingIndex(sortIndex);\n if (sorting[0].direction === 'DESC') {\n query.descending();\n } else {\n query.ascending();\n }\n }\n }\n\n isNotEmptyObject(obj: unknown) {\n return (\n obj !== null &&\n typeof obj === 'object' &&\n Object.keys(obj).length > 0\n );\n }\n\n encryptPaginationKey(key: Record<string, any>): string {\n const jsonKey = JSON.stringify(key);\n return Buffer.from(jsonKey).toString('base64');\n }\n\n decryptPaginationKey(encodedKey: string): Record<string, any> {\n const decodedKey = Buffer.from(encodedKey, 'base64').toString('utf-8');\n return JSON.parse(decodedKey);\n }\n\n async update(\n filters: IFilter[] | ICompositeFilter,\n data: Partial<T>,\n { replace = false },\n ): Promise<any> {\n const savedRecord = await this.findItem({\n filters: filters as IFilter[],\n });\n\n if (replace) {\n //delete all attributes of savedRecord except those that as marked as primary columns in the schema\n }\n\n const newData: any = {\n ...savedRecord,\n ...data,\n };\n\n await this.dynamoDbClientService.put(newData);\n return newData;\n }\n\n async remove(\n filters: IFilter[] | ICompositeFilter | IFilter[][],\n options: IRemoveOptions,\n ) {\n if (options?.filterGroups) {\n await this.dynamoDbClientService.batchRemove(\n filters as IFilter[][],\n );\n } else {\n const key = (filters as IFilter[]).reduce((obj: any, item: any) => {\n const property = item.attribute;\n obj[property] = item.value;\n return obj;\n }, {});\n await this.dynamoDbClientService.remove(key);\n }\n }\n\n async updateExpressions(\n filters: IFilter[] | ICompositeFilter,\n actions: IUpdateExpressions,\n options: IUpdateExpressionsOptions,\n ): Promise<any> {\n try {\n return await this.#prepareAndExecuteUpdateExpression(\n filters,\n actions,\n options,\n );\n } catch (error: any) {\n PersistenceErrorWrapper(error);\n }\n }\n\n async #prepareAndExecuteUpdateExpression(\n filters: IFilter[] | ICompositeFilter,\n actions: IUpdateExpressions,\n options: IUpdateExpressionsOptions,\n ) {\n const queryObject = this.#buildUpdateExpressionQuery({ filters }).get();\n const primaryKeys = this.defaultPrimaryKeys;\n\n const keyObject: any = this.#getKeyObjectForUpdateExpression(\n queryObject,\n primaryKeys,\n );\n\n const updateExpressions: any = [];\n\n Object.keys(actions).forEach((action: string) => {\n const actionUpdateExpression =\n this.#extractUpdateExpressionAttributesAndNames(\n actions,\n action,\n );\n updateExpressions.push(actionUpdateExpression);\n });\n\n const dbParams = {\n UpdateExpression: updateExpressions.join(' '),\n ...this.#getUpdateExpressionOptions(options),\n };\n\n const { ExpressionAttributeValues, ExpressionAttributeNames } =\n queryObject;\n if (Object.keys(ExpressionAttributeValues).length > 0) {\n dbParams['ExpressionAttributeValues'] = {\n ...ExpressionAttributeValues,\n ...dbParams.ExpressionAttributeValues,\n };\n }\n\n if (Object.keys(ExpressionAttributeNames).length > 0) {\n dbParams['ExpressionAttributeNames'] = {\n ...ExpressionAttributeNames,\n ...dbParams.ExpressionAttributeNames,\n };\n }\n if (queryObject.FilterExpression)\n dbParams['ConditionExpression'] = queryObject.FilterExpression;\n\n return this.dynamoDbClientService.updateExpressions(\n keyObject,\n dbParams,\n );\n }\n\n #buildUpdateExpressionQuery(options: IFindOptions): QueryBuilderService {\n const query = new QueryBuilderService();\n\n if (options.index?.indexName) query.usingIndex(options.index.indexName);\n this.applyFilters(query, options);\n\n return query;\n }\n\n #getKeyObjectForUpdateExpression(queryObject: any, primaryKeys: any) {\n const keyObject: any = {};\n\n Object.keys(queryObject.ExpressionAttributeNames).forEach(\n (attribute) => {\n const sanitizedAttribute = attribute\n .replace('#', '')\n .replace('1', '');\n if (primaryKeys.includes(sanitizedAttribute)) {\n const valueName = `:${sanitizedAttribute}1`;\n keyObject[sanitizedAttribute] =\n queryObject.ExpressionAttributeValues[valueName];\n delete queryObject.ExpressionAttributeValues[valueName];\n delete queryObject.ExpressionAttributeNames[attribute];\n }\n },\n );\n\n return keyObject;\n }\n\n #getUpdateExpressionOptions(options: IUpdateExpressionsOptions) {\n const updateExprOptions: any = {\n ReturnValues: options.returnValues,\n };\n\n if (options.expressionAttributeNames)\n updateExprOptions.ExpressionAttributeNames =\n options.expressionAttributeNames;\n if (options.expressionAttributeValues)\n updateExprOptions.ExpressionAttributeValues =\n options.expressionAttributeValues;\n\n return updateExprOptions;\n }\n\n #extractUpdateExpressionAttributesAndNames(\n actions: any,\n actionType: string,\n ) {\n const actionUpdateExpressions: any = [];\n\n actions[actionType].forEach((action: any) => {\n switch (actionType) {\n case DYNAMO_DB_UPDATE_ACTIONS.DELETE:\n case DYNAMO_DB_UPDATE_ACTIONS.REMOVE:\n actionUpdateExpressions.push(`${action.path}`);\n break;\n\n case DYNAMO_DB_UPDATE_ACTIONS.ADD:\n case DYNAMO_DB_UPDATE_ACTIONS.SET:\n {\n let operator = '';\n if (actionType == DYNAMO_DB_UPDATE_ACTIONS.SET)\n operator = '=';\n actionUpdateExpressions.push(\n `${action.path} ${operator}${action.value}`,\n );\n }\n break;\n }\n });\n\n const actionUpdateExpression = `${actionType} ${actionUpdateExpressions.join(\n ', ',\n )}`;\n\n return actionUpdateExpression;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n runRawQuery(query: string, params: any[]): Promise<any> {\n throw new Error('Method not implemented.');\n }\n}\n"]}