@qrvey/data-persistence 0.5.8 → 0.5.9

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/cjs/index.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getDbPool = exports.buildSort = exports.buildQueryIndex = exports.buildFilter = exports.CrudSchema = exports.CrudService = void 0;
6
+ exports.Pool = exports.getDbPool = exports.buildSort = exports.buildQueryIndex = exports.buildFilter = exports.CrudSchema = exports.CrudService = void 0;
7
7
  var crud_service_1 = require("./services/crud.service");
8
8
  Object.defineProperty(exports, "CrudService", { enumerable: true, get: function () { return __importDefault(crud_service_1).default; } });
9
9
  var crudSchema_1 = require("./schemas/crudSchema");
@@ -14,4 +14,6 @@ Object.defineProperty(exports, "buildQueryIndex", { enumerable: true, get: funct
14
14
  Object.defineProperty(exports, "buildSort", { enumerable: true, get: function () { return crudHelpers_1.buildSort; } });
15
15
  var dbPool_service_1 = require("./services/dbPool.service");
16
16
  Object.defineProperty(exports, "getDbPool", { enumerable: true, get: function () { return dbPool_service_1.getDbPool; } });
17
+ var pg_1 = require("pg");
18
+ Object.defineProperty(exports, "Pool", { enumerable: true, get: function () { return pg_1.Pool; } });
17
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAiE;AAAxD,4HAAA,OAAO,OAAe;AAC/B,mDAAkD;AAAzC,wGAAA,UAAU,OAAA;AAWnB,qDAAgF;AAAvE,0GAAA,WAAW,OAAA;AAAE,8GAAA,eAAe,OAAA;AAAE,wGAAA,SAAS,OAAA;AAEhD,4DAAsD;AAA7C,2GAAA,SAAS,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAiE;AAAxD,4HAAA,OAAO,OAAe;AAC/B,mDAAkD;AAAzC,wGAAA,UAAU,OAAA;AAWnB,qDAAgF;AAAvE,0GAAA,WAAW,OAAA;AAAE,8GAAA,eAAe,OAAA;AAAE,wGAAA,SAAS,OAAA;AAEhD,4DAAsD;AAA7C,2GAAA,SAAS,OAAA;AAElB,yBAA0B;AAAjB,0FAAA,IAAI,OAAA"}
@@ -1,4 +1,5 @@
1
1
  import { PoolClient, Pool, PoolConfig } from 'pg';
2
+ export { Pool } from 'pg';
2
3
 
3
4
  interface IFilter {
4
5
  attribute: string;
@@ -1,5 +1,6 @@
1
1
  import { FILTER_LOGIC_OPERATORS, CONNECTION_CLOSING_MODES, __spreadValues, __objRest, isMultiPlatformMode, __spreadProps } from './chunk-2OYWEFNZ.mjs';
2
2
  import { Pool } from 'pg';
3
+ export { Pool } from 'pg';
3
4
 
4
5
  // src/helpers/crudHelpers.ts
5
6
  function buildFilter(attribute, value, operator = "EQUAL", relativePath = void 0) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/helpers/crudHelpers.ts","../../src/services/crudFactory.service.ts","../../src/services/crud.service.ts","../../src/schemas/crudSchema.ts","../../src/types/filterLogicOperator.type.ts","../../src/types/connectionClosingMode.type.ts","../../src/services/dbPool.service.ts"],"names":["isMultiPlatformMode"],"mappings":"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","file":"index.mjs","sourcesContent":["import { ISorting } from '../interfaces';\nimport { SortDirection } from '../types';\nimport { SORT_DIRECTIONS } from '../utils/constants';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function buildFilter(\n attribute: string,\n value: any,\n operator = 'EQUAL',\n relativePath = undefined,\n) {\n return {\n attribute,\n operator,\n value,\n relativePath,\n };\n}\n\nexport function buildQueryIndex(indexName: string, columns: string[]) {\n return {\n indexName,\n columns,\n };\n}\n\nexport function buildSort(\n column: string,\n direction: string = SORT_DIRECTIONS.ASC,\n): ISorting {\n return {\n column,\n direction: direction as SortDirection,\n };\n}\n","import { Pool } from 'pg';\nimport { ICrudService } from '../interfaces';\nimport { CrudSchema } from '../schemas';\nimport { DbPool } from '../types';\nexport class CrudFactory {\n static async databaseClientService<T>(\n crudSchema: typeof CrudSchema,\n pool?: Pool,\n ): Promise<ICrudService<T>> {\n const isMultiPlatformMode =\n process.env.PLATFORM_TYPE?.toLowerCase() === 'container';\n\n let DatabaseCrudService: new <T>(\n schema: typeof CrudSchema,\n poolClient?: DbPool,\n ) => ICrudService<T>;\n\n if (isMultiPlatformMode) {\n const module = await import(\n './cruds/postgresql/postgreSqlCrud.service'\n );\n DatabaseCrudService = module.PostgreSqlCrudService;\n } else {\n const module = await import(\n './cruds/dynamodb/dynamoDbCrud.service'\n );\n DatabaseCrudService = module.DynamoDbCrudService;\n }\n\n return new DatabaseCrudService(crudSchema, pool);\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Pool } from 'pg';\nimport {\n buildQueryIndex,\n buildFilter,\n buildSort,\n} from '../helpers/crudHelpers';\nimport {\n ICompositeFilter,\n ICreateMultipleResponse,\n IFilter,\n IFindOptions,\n IRemoveOptions,\n IUpdateExpressions,\n IUpdateExpressionsOptions,\n} from '../interfaces';\nimport { CrudSchema } from '../schemas';\nimport { CrudFactory } from './crudFactory.service';\n\nclass CrudService<T> {\n private crudSchema: typeof CrudSchema;\n\n constructor(\n crudSchema: typeof CrudSchema,\n private pool?: Pool,\n ) {\n this.crudSchema = crudSchema;\n }\n\n private async getCrudServiceInstance() {\n const crudService = await CrudFactory.databaseClientService(\n this.crudSchema,\n this.pool,\n );\n return crudService;\n }\n\n private getDefaultValue(columnName: string): any {\n const column = this.crudSchema.columns[columnName];\n return column ? column.default : undefined;\n }\n\n private setDefaultValues(data: any) {\n const defaultValues: { [key: string]: any } = {};\n const columns = this.crudSchema.columns;\n\n for (const columnName in columns) {\n const missingColumnValue = !(columnName in data);\n const columnDefaultValue = this.getDefaultValue(columnName);\n if (missingColumnValue && columnDefaultValue) {\n defaultValues[columnName] = columnDefaultValue;\n }\n }\n\n return { ...defaultValues, ...data };\n }\n\n create(data: T | T[]): Promise<unknown | ICreateMultipleResponse> {\n const processedData = Array.isArray(data)\n ? data.map(this.setDefaultValues.bind(this))\n : this.setDefaultValues(data);\n\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.create(processedData),\n );\n }\n\n find(options: IFindOptions) {\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.find(options),\n );\n }\n\n findItem(options: IFindOptions) {\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.findItem(options),\n );\n }\n\n update(\n filters: IFilter[] | ICompositeFilter,\n data: Partial<T>,\n ): Promise<T | null> {\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.update(filters, data, {}),\n );\n }\n\n remove(\n filters: IFilter[] | ICompositeFilter | IFilter[][],\n options: IRemoveOptions = {},\n ): Promise<void> {\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.remove(filters, options),\n );\n }\n\n findAll(options: IFindOptions) {\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\n const { pagination, ...findAllOptions } = options;\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.findAll(findAllOptions),\n );\n }\n\n findCount(findCountOptions: IFindOptions): Promise<number> {\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.findCount(findCountOptions),\n );\n }\n\n buildFilter(\n attribute: string,\n value: any,\n operator = 'EQUAL',\n relativePath = undefined,\n ) {\n return buildFilter(attribute, value, operator, relativePath);\n }\n\n buildQueryIndex(indexName: string, columns: string[]) {\n return buildQueryIndex(indexName, columns);\n }\n\n buildSort(column: string, direction: string) {\n return buildSort(column, direction);\n }\n\n updateExpression(\n filters: IFilter[] | ICompositeFilter,\n actions: IUpdateExpressions,\n options?: IUpdateExpressionsOptions,\n ): Promise<T | null> {\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.updateExpressions(filters, actions, options),\n );\n }\n\n runRawQuery(query: string, params: any[]) {\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.runRawQuery(query, params),\n );\n }\n}\n\nexport default CrudService;\n","import { PoolClient } from 'pg';\nimport { ITableName, ITableColumns } from '../interfaces';\n\nexport class CrudSchema {\n static table: string | ITableName;\n static columns: ITableColumns;\n static usePool?: boolean = false;\n static schema: string | null = null;\n static poolClient?: PoolClient;\n static isTemporalTable: boolean = false;\n}\n","import { FILTER_LOGIC_OPERATORS } from '../utils/constants';\n\nconst VALID_FILTER_LOGIC_OPERATORS: FILTER_LOGIC_OPERATORS[] = Object.values(\n FILTER_LOGIC_OPERATORS,\n);\n\nexport type FilterLogicOperator = (typeof VALID_FILTER_LOGIC_OPERATORS)[number];\n","import { CONNECTION_CLOSING_MODES } from '../utils/constants';\n\nconst VALID_CONNECTION_CLOSING_MODES: CONNECTION_CLOSING_MODES[] =\n Object.values(CONNECTION_CLOSING_MODES);\n\nexport type ConnectionClosingMode =\n (typeof VALID_CONNECTION_CLOSING_MODES)[number];\n","import { Pool, PoolConfig } from 'pg';\nimport { isMultiPlatformMode } from '../utils/constants';\n\nexport function getDbPool(poolConfig?: PoolConfig) {\n if (!isMultiPlatformMode()) return undefined;\n\n const pool = new Pool({\n ...poolConfig,\n connectionString: process.env.MULTIPLATFORM_PG_CONNECTION_STRING,\n });\n return pool;\n}\n"]}
1
+ {"version":3,"sources":["../../src/helpers/crudHelpers.ts","../../src/services/crudFactory.service.ts","../../src/services/crud.service.ts","../../src/schemas/crudSchema.ts","../../src/types/filterLogicOperator.type.ts","../../src/types/connectionClosingMode.type.ts","../../src/services/dbPool.service.ts"],"names":["isMultiPlatformMode"],"mappings":"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","file":"index.mjs","sourcesContent":["import { ISorting } from '../interfaces';\nimport { SortDirection } from '../types';\nimport { SORT_DIRECTIONS } from '../utils/constants';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function buildFilter(\n attribute: string,\n value: any,\n operator = 'EQUAL',\n relativePath = undefined,\n) {\n return {\n attribute,\n operator,\n value,\n relativePath,\n };\n}\n\nexport function buildQueryIndex(indexName: string, columns: string[]) {\n return {\n indexName,\n columns,\n };\n}\n\nexport function buildSort(\n column: string,\n direction: string = SORT_DIRECTIONS.ASC,\n): ISorting {\n return {\n column,\n direction: direction as SortDirection,\n };\n}\n","import { Pool } from 'pg';\nimport { ICrudService } from '../interfaces';\nimport { CrudSchema } from '../schemas';\nimport { DbPool } from '../types';\nexport class CrudFactory {\n static async databaseClientService<T>(\n crudSchema: typeof CrudSchema,\n pool?: Pool,\n ): Promise<ICrudService<T>> {\n const isMultiPlatformMode =\n process.env.PLATFORM_TYPE?.toLowerCase() === 'container';\n\n let DatabaseCrudService: new <T>(\n schema: typeof CrudSchema,\n poolClient?: DbPool,\n ) => ICrudService<T>;\n\n if (isMultiPlatformMode) {\n const module = await import(\n './cruds/postgresql/postgreSqlCrud.service'\n );\n DatabaseCrudService = module.PostgreSqlCrudService;\n } else {\n const module = await import(\n './cruds/dynamodb/dynamoDbCrud.service'\n );\n DatabaseCrudService = module.DynamoDbCrudService;\n }\n\n return new DatabaseCrudService(crudSchema, pool);\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Pool } from 'pg';\nimport {\n buildQueryIndex,\n buildFilter,\n buildSort,\n} from '../helpers/crudHelpers';\nimport {\n ICompositeFilter,\n ICreateMultipleResponse,\n IFilter,\n IFindOptions,\n IRemoveOptions,\n IUpdateExpressions,\n IUpdateExpressionsOptions,\n} from '../interfaces';\nimport { CrudSchema } from '../schemas';\nimport { CrudFactory } from './crudFactory.service';\n\nclass CrudService<T> {\n private crudSchema: typeof CrudSchema;\n\n constructor(\n crudSchema: typeof CrudSchema,\n private pool?: Pool,\n ) {\n this.crudSchema = crudSchema;\n }\n\n private async getCrudServiceInstance() {\n const crudService = await CrudFactory.databaseClientService(\n this.crudSchema,\n this.pool,\n );\n return crudService;\n }\n\n private getDefaultValue(columnName: string): any {\n const column = this.crudSchema.columns[columnName];\n return column ? column.default : undefined;\n }\n\n private setDefaultValues(data: any) {\n const defaultValues: { [key: string]: any } = {};\n const columns = this.crudSchema.columns;\n\n for (const columnName in columns) {\n const missingColumnValue = !(columnName in data);\n const columnDefaultValue = this.getDefaultValue(columnName);\n if (missingColumnValue && columnDefaultValue) {\n defaultValues[columnName] = columnDefaultValue;\n }\n }\n\n return { ...defaultValues, ...data };\n }\n\n create(data: T | T[]): Promise<unknown | ICreateMultipleResponse> {\n const processedData = Array.isArray(data)\n ? data.map(this.setDefaultValues.bind(this))\n : this.setDefaultValues(data);\n\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.create(processedData),\n );\n }\n\n find(options: IFindOptions) {\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.find(options),\n );\n }\n\n findItem(options: IFindOptions) {\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.findItem(options),\n );\n }\n\n update(\n filters: IFilter[] | ICompositeFilter,\n data: Partial<T>,\n ): Promise<T | null> {\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.update(filters, data, {}),\n );\n }\n\n remove(\n filters: IFilter[] | ICompositeFilter | IFilter[][],\n options: IRemoveOptions = {},\n ): Promise<void> {\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.remove(filters, options),\n );\n }\n\n findAll(options: IFindOptions) {\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\n const { pagination, ...findAllOptions } = options;\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.findAll(findAllOptions),\n );\n }\n\n findCount(findCountOptions: IFindOptions): Promise<number> {\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.findCount(findCountOptions),\n );\n }\n\n buildFilter(\n attribute: string,\n value: any,\n operator = 'EQUAL',\n relativePath = undefined,\n ) {\n return buildFilter(attribute, value, operator, relativePath);\n }\n\n buildQueryIndex(indexName: string, columns: string[]) {\n return buildQueryIndex(indexName, columns);\n }\n\n buildSort(column: string, direction: string) {\n return buildSort(column, direction);\n }\n\n updateExpression(\n filters: IFilter[] | ICompositeFilter,\n actions: IUpdateExpressions,\n options?: IUpdateExpressionsOptions,\n ): Promise<T | null> {\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.updateExpressions(filters, actions, options),\n );\n }\n\n runRawQuery(query: string, params: any[]) {\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.runRawQuery(query, params),\n );\n }\n}\n\nexport default CrudService;\n","import { PoolClient } from 'pg';\nimport { ITableName, ITableColumns } from '../interfaces';\n\nexport class CrudSchema {\n static table: string | ITableName;\n static columns: ITableColumns;\n static usePool?: boolean = false;\n static schema: string | null = null;\n static poolClient?: PoolClient;\n static isTemporalTable: boolean = false;\n}\n","import { FILTER_LOGIC_OPERATORS } from '../utils/constants';\n\nconst VALID_FILTER_LOGIC_OPERATORS: FILTER_LOGIC_OPERATORS[] = Object.values(\n FILTER_LOGIC_OPERATORS,\n);\n\nexport type FilterLogicOperator = (typeof VALID_FILTER_LOGIC_OPERATORS)[number];\n","import { CONNECTION_CLOSING_MODES } from '../utils/constants';\n\nconst VALID_CONNECTION_CLOSING_MODES: CONNECTION_CLOSING_MODES[] =\n Object.values(CONNECTION_CLOSING_MODES);\n\nexport type ConnectionClosingMode =\n (typeof VALID_CONNECTION_CLOSING_MODES)[number];\n","import { Pool, PoolConfig } from 'pg';\nimport { isMultiPlatformMode } from '../utils/constants';\n\nexport function getDbPool(poolConfig?: PoolConfig) {\n if (!isMultiPlatformMode()) return undefined;\n\n const pool = new Pool({\n ...poolConfig,\n connectionString: process.env.MULTIPLATFORM_PG_CONNECTION_STRING,\n });\n return pool;\n}\n"]}
@@ -1,4 +1,5 @@
1
1
  import { PoolClient, Pool, PoolConfig } from 'pg';
2
+ export { Pool } from 'pg';
2
3
 
3
4
  interface IFilter {
4
5
  attribute: string;
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@qrvey/data-persistence",
3
3
  "types": "dist/types/index.d.ts",
4
4
  "main": "dist/cjs/index.js",
5
- "version": "0.5.8",
5
+ "version": "0.5.9",
6
6
  "license": "MIT",
7
7
  "exports": {
8
8
  ".": {