@onivoro/server-typeorm-postgres 0.0.1

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 (44) hide show
  1. package/README.md +11 -0
  2. package/package.json +12 -0
  3. package/src/index.d.ts +13 -0
  4. package/src/index.js +17 -0
  5. package/src/index.js.map +1 -0
  6. package/src/lib/column-migration-base.class.d.ts +8 -0
  7. package/src/lib/column-migration-base.class.js +23 -0
  8. package/src/lib/column-migration-base.class.js.map +1 -0
  9. package/src/lib/columns-migration-base.class.d.ts +8 -0
  10. package/src/lib/columns-migration-base.class.js +23 -0
  11. package/src/lib/columns-migration-base.class.js.map +1 -0
  12. package/src/lib/data-source-config-factory.function.d.ts +8 -0
  13. package/src/lib/data-source-config-factory.function.js +29 -0
  14. package/src/lib/data-source-config-factory.function.js.map +1 -0
  15. package/src/lib/data-source-factory.function.d.ts +8 -0
  16. package/src/lib/data-source-factory.function.js +8 -0
  17. package/src/lib/data-source-factory.function.js.map +1 -0
  18. package/src/lib/entity-provider.interface.d.ts +9 -0
  19. package/src/lib/entity-provider.interface.js +3 -0
  20. package/src/lib/entity-provider.interface.js.map +1 -0
  21. package/src/lib/get-api-type-from-column.function.d.ts +2 -0
  22. package/src/lib/get-api-type-from-column.function.js +16 -0
  23. package/src/lib/get-api-type-from-column.function.js.map +1 -0
  24. package/src/lib/nullable-table-column.decorator.d.ts +2 -0
  25. package/src/lib/nullable-table-column.decorator.js +13 -0
  26. package/src/lib/nullable-table-column.decorator.js.map +1 -0
  27. package/src/lib/postgres.module.d.ts +10 -0
  28. package/src/lib/postgres.module.js +45 -0
  29. package/src/lib/postgres.module.js.map +1 -0
  30. package/src/lib/primary-table-column.decorator.d.ts +2 -0
  31. package/src/lib/primary-table-column.decorator.js +13 -0
  32. package/src/lib/primary-table-column.decorator.js.map +1 -0
  33. package/src/lib/sql-writer.class.d.ts +8 -0
  34. package/src/lib/sql-writer.class.js +33 -0
  35. package/src/lib/sql-writer.class.js.map +1 -0
  36. package/src/lib/table-column.decorator.d.ts +2 -0
  37. package/src/lib/table-column.decorator.js +13 -0
  38. package/src/lib/table-column.decorator.js.map +1 -0
  39. package/src/lib/table.decorator.d.ts +3 -0
  40. package/src/lib/table.decorator.js +12 -0
  41. package/src/lib/table.decorator.js.map +1 -0
  42. package/src/lib/type-orm.repository.d.ts +18 -0
  43. package/src/lib/type-orm.repository.js +71 -0
  44. package/src/lib/type-orm.repository.js.map +1 -0
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # server-typeorm-postgres
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Running unit tests
6
+
7
+ Run `nx test server-typeorm-postgres` to execute the unit tests via [Jest](https://jestjs.io).
8
+
9
+ ## Running lint
10
+
11
+ Run `nx lint server-typeorm-postgres` to execute the lint via [ESLint](https://eslint.org/).
package/package.json ADDED
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "@onivoro/server-typeorm-postgres",
3
+ "version": "0.0.1",
4
+ "dependencies": {
5
+ "typeorm": "^0.3.12"
6
+ },
7
+ "peerDependencies": {
8
+ "tslib": "^2.3.0"
9
+ },
10
+ "main": "./src/index.js",
11
+ "types": "./src/index.d.ts"
12
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ export * from './lib/column-migration-base.class';
2
+ export * from './lib/columns-migration-base.class';
3
+ export * from './lib/data-source-config-factory.function';
4
+ export * from './lib/data-source-factory.function';
5
+ export * from './lib/entity-provider.interface';
6
+ export * from './lib/get-api-type-from-column.function';
7
+ export * from './lib/nullable-table-column.decorator';
8
+ export * from './lib/postgres.module';
9
+ export * from './lib/primary-table-column.decorator';
10
+ export * from './lib/sql-writer.class';
11
+ export * from './lib/table-column.decorator';
12
+ export * from './lib/table.decorator';
13
+ export * from './lib/type-orm.repository';
package/src/index.js ADDED
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./lib/column-migration-base.class"), exports);
5
+ tslib_1.__exportStar(require("./lib/columns-migration-base.class"), exports);
6
+ tslib_1.__exportStar(require("./lib/data-source-config-factory.function"), exports);
7
+ tslib_1.__exportStar(require("./lib/data-source-factory.function"), exports);
8
+ tslib_1.__exportStar(require("./lib/entity-provider.interface"), exports);
9
+ tslib_1.__exportStar(require("./lib/get-api-type-from-column.function"), exports);
10
+ tslib_1.__exportStar(require("./lib/nullable-table-column.decorator"), exports);
11
+ tslib_1.__exportStar(require("./lib/postgres.module"), exports);
12
+ tslib_1.__exportStar(require("./lib/primary-table-column.decorator"), exports);
13
+ tslib_1.__exportStar(require("./lib/sql-writer.class"), exports);
14
+ tslib_1.__exportStar(require("./lib/table-column.decorator"), exports);
15
+ tslib_1.__exportStar(require("./lib/table.decorator"), exports);
16
+ tslib_1.__exportStar(require("./lib/type-orm.repository"), exports);
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/server-typeorm-postgres/src/index.ts"],"names":[],"mappings":";;;AAAA,4EAAkD;AAClD,6EAAmD;AACnD,oFAA0D;AAC1D,6EAAmD;AACnD,0EAAgD;AAChD,kFAAwD;AACxD,gFAAsD;AACtD,gEAAsC;AACtC,+EAAqD;AACrD,iEAAuC;AACvC,uEAA6C;AAC7C,gEAAsC;AACtC,oEAA0C"}
@@ -0,0 +1,8 @@
1
+ import { MigrationInterface, QueryRunner, TableColumnOptions } from "typeorm";
2
+ export declare class ColumnMigrationBase implements MigrationInterface {
3
+ table: string;
4
+ option: TableColumnOptions;
5
+ constructor(table: string, option: TableColumnOptions);
6
+ up(queryRunner: QueryRunner): Promise<void>;
7
+ down(queryRunner: QueryRunner): Promise<void>;
8
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ColumnMigrationBase = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const sql_writer_class_1 = require("./sql-writer.class");
6
+ class ColumnMigrationBase {
7
+ constructor(table, option) {
8
+ this.table = table;
9
+ this.option = option;
10
+ }
11
+ up(queryRunner) {
12
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
13
+ yield queryRunner.query(sql_writer_class_1.SqlWriter.addColumn(this.table, this.option));
14
+ });
15
+ }
16
+ down(queryRunner) {
17
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
18
+ yield queryRunner.query(sql_writer_class_1.SqlWriter.dropColumn(this.table, this.option));
19
+ });
20
+ }
21
+ }
22
+ exports.ColumnMigrationBase = ColumnMigrationBase;
23
+ //# sourceMappingURL=column-migration-base.class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-migration-base.class.js","sourceRoot":"","sources":["../../../../../libs/server-typeorm-postgres/src/lib/column-migration-base.class.ts"],"names":[],"mappings":";;;;AACA,yDAA+C;AAE/C,MAAa,mBAAmB;IAC5B,YACW,KAAa,EACb,MAA0B;QAD1B,UAAK,GAAL,KAAK,CAAQ;QACb,WAAM,GAAN,MAAM,CAAoB;IACjC,CAAC;IAEQ,EAAE,CAAC,WAAwB;;YACpC,MAAM,WAAW,CAAC,KAAK,CAAC,4BAAS,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1E,CAAC;KAAA;IAEY,IAAI,CAAC,WAAwB;;YACtC,MAAM,WAAW,CAAC,KAAK,CAAC,4BAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3E,CAAC;KAAA;CACJ;AAbD,kDAaC"}
@@ -0,0 +1,8 @@
1
+ import { MigrationInterface, QueryRunner, TableColumnOptions } from "typeorm";
2
+ export declare class ColumnsMigrationBase implements MigrationInterface {
3
+ table: string;
4
+ options: TableColumnOptions[];
5
+ constructor(table: string, options: TableColumnOptions[]);
6
+ up(queryRunner: QueryRunner): Promise<void>;
7
+ down(queryRunner: QueryRunner): Promise<void>;
8
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ColumnsMigrationBase = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const sql_writer_class_1 = require("./sql-writer.class");
6
+ class ColumnsMigrationBase {
7
+ constructor(table, options) {
8
+ this.table = table;
9
+ this.options = options;
10
+ }
11
+ up(queryRunner) {
12
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
13
+ yield queryRunner.query(sql_writer_class_1.SqlWriter.addColumns(this.table, this.options));
14
+ });
15
+ }
16
+ down(queryRunner) {
17
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
18
+ yield queryRunner.query(sql_writer_class_1.SqlWriter.dropColumns(this.table, this.options));
19
+ });
20
+ }
21
+ }
22
+ exports.ColumnsMigrationBase = ColumnsMigrationBase;
23
+ //# sourceMappingURL=columns-migration-base.class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columns-migration-base.class.js","sourceRoot":"","sources":["../../../../../libs/server-typeorm-postgres/src/lib/columns-migration-base.class.ts"],"names":[],"mappings":";;;;AACA,yDAA+C;AAE/C,MAAa,oBAAoB;IAC7B,YACW,KAAa,EACb,OAA6B;QAD7B,UAAK,GAAL,KAAK,CAAQ;QACb,YAAO,GAAP,OAAO,CAAsB;IACpC,CAAC;IAEQ,EAAE,CAAC,WAAwB;;YACpC,MAAM,WAAW,CAAC,KAAK,CAAC,4BAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5E,CAAC;KAAA;IAEY,IAAI,CAAC,WAAwB;;YACtC,MAAM,WAAW,CAAC,KAAK,CAAC,4BAAS,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7E,CAAC;KAAA;CACJ;AAbD,oDAaC"}
@@ -0,0 +1,8 @@
1
+ import { PostgresConnectionOptions } from 'typeorm/driver/postgres/PostgresConnectionOptions';
2
+ export declare function dataSourceConfigFactory(name: string, options: {
3
+ database: string;
4
+ host: string;
5
+ port: string;
6
+ username: string;
7
+ password: string;
8
+ }, entities: any[]): PostgresConnectionOptions;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dataSourceConfigFactory = void 0;
4
+ const typeorm_naming_strategies_1 = require("typeorm-naming-strategies");
5
+ function dataSourceConfigFactory(name, options, entities) {
6
+ const { database, host, password, port, username } = options;
7
+ const isDev = host === 'localhost' && password === 'postgres';
8
+ const config = {
9
+ name,
10
+ autoLoadEntities: true,
11
+ type: 'postgres',
12
+ host,
13
+ port,
14
+ username,
15
+ password,
16
+ database,
17
+ // never change synchronize cuz it will overwrite the database!!!
18
+ synchronize: isDev,
19
+ // never change synchronize cuz it will overwrite the database!!!
20
+ logging: isDev,
21
+ entities,
22
+ subscribers: [],
23
+ migrations: [],
24
+ namingStrategy: new typeorm_naming_strategies_1.SnakeNamingStrategy(),
25
+ };
26
+ return config;
27
+ }
28
+ exports.dataSourceConfigFactory = dataSourceConfigFactory;
29
+ //# sourceMappingURL=data-source-config-factory.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-source-config-factory.function.js","sourceRoot":"","sources":["../../../../../libs/server-typeorm-postgres/src/lib/data-source-config-factory.function.ts"],"names":[],"mappings":";;;AAAA,yEAAgE;AAGhE,SAAgB,uBAAuB,CACrC,IAAY,EACZ,OAMC,EACD,QAAe;IAGf,MAAM,EACJ,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EACzC,GAAG,OAAO,CAAC;IAEZ,MAAM,KAAK,GAAG,IAAI,KAAK,WAAW,IAAI,QAAQ,KAAK,UAAU,CAAC;IAE9D,MAAM,MAAM,GAA8B;QACxC,IAAI;QACJ,gBAAgB,EAAE,IAAI;QACtB,IAAI,EAAE,UAAU;QAChB,IAAI;QACJ,IAAI;QACJ,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,iEAAiE;QACjE,WAAW,EAAE,KAAK;QAClB,iEAAiE;QACjE,OAAO,EAAE,KAAK;QACd,QAAQ;QACR,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,EAAE;QACd,cAAc,EAAE,IAAI,+CAAmB,EAAE;KACnC,CAAC;IAET,OAAO,MAAM,CAAC;AAChB,CAAC;AAtCD,0DAsCC"}
@@ -0,0 +1,8 @@
1
+ import { DataSource } from 'typeorm';
2
+ export declare const dataSourceFactory: (name: string, options: {
3
+ database: string;
4
+ host: string;
5
+ port: string;
6
+ username: string;
7
+ password: string;
8
+ }, entities: any[]) => DataSource;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dataSourceFactory = void 0;
4
+ const typeorm_1 = require("typeorm");
5
+ const data_source_config_factory_function_1 = require("./data-source-config-factory.function");
6
+ const dataSourceFactory = (name, options, entities) => new typeorm_1.DataSource((0, data_source_config_factory_function_1.dataSourceConfigFactory)(name, options, entities));
7
+ exports.dataSourceFactory = dataSourceFactory;
8
+ //# sourceMappingURL=data-source-factory.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-source-factory.function.js","sourceRoot":"","sources":["../../../../../libs/server-typeorm-postgres/src/lib/data-source-factory.function.ts"],"names":[],"mappings":";;;AAAA,qCAAqC;AACrC,+FAAgF;AAEzE,MAAM,iBAAiB,GAAG,CAC/B,IAAY,EACZ,OAMC,EACD,QAAe,EACf,EAAE,CACF,IAAI,oBAAU,CAAC,IAAA,6DAAuB,EAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAXtD,QAAA,iBAAiB,qBAWqC"}
@@ -0,0 +1,9 @@
1
+ export interface IEntityProvider<TEntity, TFindOneOptions, TFindManyOptions, TFindOptionsWhere, TQueryDeepPartialEntity> {
2
+ getOne: (options: TFindOneOptions) => Promise<TEntity>;
3
+ getMany: (options: TFindManyOptions) => Promise<TEntity[]>;
4
+ postOne: (body: Partial<TEntity>) => Promise<TEntity>;
5
+ postMany: (body: Partial<TEntity[]>) => Promise<TEntity[]>;
6
+ delete: (options: TFindOptionsWhere) => Promise<void>;
7
+ put: (options: TFindOptionsWhere, body: TQueryDeepPartialEntity) => Promise<void>;
8
+ patch: (options: TFindOptionsWhere, body: TQueryDeepPartialEntity) => Promise<void>;
9
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=entity-provider.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-provider.interface.js","sourceRoot":"","sources":["../../../../../libs/server-typeorm-postgres/src/lib/entity-provider.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import { ColumnOptions } from "typeorm";
2
+ export declare function getApiTypeFromColumn(columnType: ColumnOptions['type']): "boolean" | "string";
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getApiTypeFromColumn = void 0;
4
+ function getApiTypeFromColumn(columnType) {
5
+ if (!columnType) {
6
+ return 'string';
7
+ }
8
+ switch (columnType) {
9
+ case 'boolean':
10
+ return columnType;
11
+ default:
12
+ return 'string';
13
+ }
14
+ }
15
+ exports.getApiTypeFromColumn = getApiTypeFromColumn;
16
+ //# sourceMappingURL=get-api-type-from-column.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-api-type-from-column.function.js","sourceRoot":"","sources":["../../../../../libs/server-typeorm-postgres/src/lib/get-api-type-from-column.function.ts"],"names":[],"mappings":";;;AAEA,SAAgB,oBAAoB,CAAC,UAAiC;IAClE,IAAG,CAAC,UAAU,EAAE;QACZ,OAAO,QAAQ,CAAC;KACnB;IAED,QAAQ,UAAU,EAAE;QAChB,KAAK,SAAS;YACV,OAAO,UAAU,CAAC;QACtB;YACI,OAAO,QAAQ,CAAC;KACvB;AACL,CAAC;AAXD,oDAWC"}
@@ -0,0 +1,2 @@
1
+ import { ColumnOptions } from "typeorm";
2
+ export declare const NullableTableColumn: (options?: Pick<ColumnOptions, 'type'>) => <TFunction extends Function, Y>(target: object | TFunction, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NullableTableColumn = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const typeorm_1 = require("typeorm");
6
+ const swagger_1 = require("@nestjs/swagger");
7
+ const get_api_type_from_column_function_1 = require("./get-api-type-from-column.function");
8
+ const NullableTableColumn = (options) => {
9
+ const apiType = (0, get_api_type_from_column_function_1.getApiTypeFromColumn)(options === null || options === void 0 ? void 0 : options.type);
10
+ return (0, common_1.applyDecorators)((0, typeorm_1.Column)({ type: options === null || options === void 0 ? void 0 : options.type, nullable: true }), (0, swagger_1.ApiPropertyOptional)({ type: apiType }));
11
+ };
12
+ exports.NullableTableColumn = NullableTableColumn;
13
+ //# sourceMappingURL=nullable-table-column.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nullable-table-column.decorator.js","sourceRoot":"","sources":["../../../../../libs/server-typeorm-postgres/src/lib/nullable-table-column.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAiD;AACjD,qCAAgD;AAChD,6CAAsD;AACtD,2FAA2E;AAEpE,MAAM,mBAAmB,GAAG,CAAC,OAAqC,EAAE,EAAE;IACzE,MAAM,OAAO,GAAG,IAAA,wDAAoB,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,CAAC;IACpD,OAAO,IAAA,wBAAe,EAAC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,IAAA,6BAAmB,EAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC,CAAC,CAAC;AAClH,CAAC,CAAC;AAHW,QAAA,mBAAmB,uBAG9B"}
@@ -0,0 +1,10 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ export declare class PostgresModule {
3
+ static configure(injectables: any[], entities: any[], options: {
4
+ database: string;
5
+ host: string;
6
+ port: string;
7
+ username: string;
8
+ password: string;
9
+ }, name?: string): DynamicModule;
10
+ }
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var PostgresModule_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.PostgresModule = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const common_1 = require("@nestjs/common");
7
+ const typeorm_1 = require("typeorm");
8
+ const data_source_factory_function_1 = require("./data-source-factory.function");
9
+ const dataSourceMap = new Map();
10
+ let PostgresModule = PostgresModule_1 = class PostgresModule {
11
+ static configure(injectables, entities, options, name = 'default') {
12
+ const providers = [
13
+ {
14
+ provide: typeorm_1.DataSource,
15
+ useFactory: () => tslib_1.__awaiter(this, void 0, void 0, function* () {
16
+ const cachedDataSource = dataSourceMap.get(name);
17
+ if (!cachedDataSource) {
18
+ const dataSource = (0, data_source_factory_function_1.dataSourceFactory)(name, options, entities);
19
+ yield dataSource.initialize();
20
+ dataSourceMap.set(name, dataSource);
21
+ }
22
+ return dataSourceMap.get(name);
23
+ }),
24
+ },
25
+ {
26
+ provide: typeorm_1.EntityManager,
27
+ useFactory: (dataSource) => {
28
+ return dataSource.manager;
29
+ },
30
+ inject: [typeorm_1.DataSource]
31
+ },
32
+ ...injectables,
33
+ ];
34
+ return {
35
+ module: PostgresModule_1,
36
+ exports: providers,
37
+ providers,
38
+ };
39
+ }
40
+ };
41
+ PostgresModule = PostgresModule_1 = tslib_1.__decorate([
42
+ (0, common_1.Module)({})
43
+ ], PostgresModule);
44
+ exports.PostgresModule = PostgresModule;
45
+ //# sourceMappingURL=postgres.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres.module.js","sourceRoot":"","sources":["../../../../../libs/server-typeorm-postgres/src/lib/postgres.module.ts"],"names":[],"mappings":";;;;;AAAA,2CAAuD;AACvD,qCAAoD;AACpD,iFAAmE;AAEnE,MAAM,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;AAGzB,IAAM,cAAc,sBAApB,MAAM,cAAc;IACzB,MAAM,CAAC,SAAS,CACd,WAAkB,EAClB,QAAe,EACf,OAMC,EACD,IAAI,GAAG,SAAS;QAEhB,MAAM,SAAS,GAAG;YAChB;gBACE,OAAO,EAAE,oBAAU;gBACnB,UAAU,EAAE,GAAS,EAAE;oBACrB,MAAM,gBAAgB,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACjD,IAAI,CAAC,gBAAgB,EAAE;wBACrB,MAAM,UAAU,GAAe,IAAA,gDAAiB,EAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;wBAC1E,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;wBAC9B,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;qBACrC;oBACD,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACjC,CAAC,CAAA;aACF;YACD;gBACE,OAAO,EAAE,uBAAa;gBACtB,UAAU,EAAE,CAAC,UAAsB,EAAE,EAAE;oBACrC,OAAO,UAAU,CAAC,OAAO,CAAC;gBAC5B,CAAC;gBACD,MAAM,EAAE,CAAC,oBAAU,CAAC;aACrB;YACD,GAAG,WAAW;SACf,CAAC;QACF,OAAO;YACL,MAAM,EAAE,gBAAc;YACtB,OAAO,EAAE,SAAS;YAClB,SAAS;SACV,CAAC;IACJ,CAAC;CACF,CAAA;AAzCY,cAAc;IAD1B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,cAAc,CAyC1B;AAzCY,wCAAc"}
@@ -0,0 +1,2 @@
1
+ import { ColumnOptions } from "typeorm";
2
+ export declare const PrimaryTableColumn: (options?: Pick<ColumnOptions, 'type'>) => <TFunction extends Function, Y>(target: object | TFunction, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PrimaryTableColumn = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const typeorm_1 = require("typeorm");
6
+ const swagger_1 = require("@nestjs/swagger");
7
+ const get_api_type_from_column_function_1 = require("./get-api-type-from-column.function");
8
+ const PrimaryTableColumn = (options) => {
9
+ const apiType = (0, get_api_type_from_column_function_1.getApiTypeFromColumn)(options === null || options === void 0 ? void 0 : options.type);
10
+ return (0, common_1.applyDecorators)((0, typeorm_1.Column)({ type: options === null || options === void 0 ? void 0 : options.type, nullable: false }), (0, swagger_1.ApiProperty)({ type: apiType }));
11
+ };
12
+ exports.PrimaryTableColumn = PrimaryTableColumn;
13
+ //# sourceMappingURL=primary-table-column.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primary-table-column.decorator.js","sourceRoot":"","sources":["../../../../../libs/server-typeorm-postgres/src/lib/primary-table-column.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAiD;AACjD,qCAAgD;AAChD,6CAA8C;AAC9C,2FAA2E;AAEpE,MAAM,kBAAkB,GAAG,CAAC,OAAqC,EAAE,EAAE;IACxE,MAAM,OAAO,GAAG,IAAA,wDAAoB,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,CAAC;IACpD,OAAO,IAAA,wBAAe,EAAC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,IAAA,qBAAW,EAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC,CAAC,CAAC;AAC3G,CAAC,CAAC;AAHW,QAAA,kBAAkB,sBAG7B"}
@@ -0,0 +1,8 @@
1
+ import { TableColumnOptions } from "typeorm";
2
+ export declare class SqlWriter {
3
+ static addColumn(table: any, option: TableColumnOptions): string;
4
+ static addColumns(table: any, options: TableColumnOptions[]): string;
5
+ static dropColumn(table: any, option: TableColumnOptions): string;
6
+ static dropColumns(table: any, options: TableColumnOptions[]): string;
7
+ static getDefaultValueExpression(option: TableColumnOptions): string;
8
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SqlWriter = void 0;
4
+ class SqlWriter {
5
+ static addColumn(table, option) {
6
+ const notNullExpression = option.isNullable ? '' : ' NOT NULL ';
7
+ const foreignKey = option.foreignKeyConstraintName ? ` REFERENCES ${option.foreignKeyConstraintName} ` : '';
8
+ return `ALTER TABLE "${table}" ADD "${option.name}" ${option.type}${notNullExpression}${SqlWriter.getDefaultValueExpression(option)}${foreignKey}`;
9
+ }
10
+ static addColumns(table, options) {
11
+ return options.map(option => SqlWriter.addColumn(table, option)).join('; \n');
12
+ }
13
+ static dropColumn(table, option) {
14
+ return `ALTER TABLE "${table}" DROP COLUMN ${option.name}`;
15
+ }
16
+ static dropColumns(table, options) {
17
+ return options.map(option => SqlWriter.dropColumn(table, option)).join('; \n');
18
+ }
19
+ static getDefaultValueExpression(option) {
20
+ if (typeof option.default === 'undefined') {
21
+ return '';
22
+ }
23
+ if (['json', 'jsonb'].includes(option.type)) {
24
+ return ` DEFAULT '${JSON.stringify(option.default)}'::${option.type} `;
25
+ }
26
+ if (['boolean', 'bigint', 'int'].includes(option.type)) {
27
+ return ` DEFAULT ${option.default.toString().toUpperCase()} `;
28
+ }
29
+ return ` DEFAULT '${option.default}' `;
30
+ }
31
+ }
32
+ exports.SqlWriter = SqlWriter;
33
+ //# sourceMappingURL=sql-writer.class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-writer.class.js","sourceRoot":"","sources":["../../../../../libs/server-typeorm-postgres/src/lib/sql-writer.class.ts"],"names":[],"mappings":";;;AAEA,MAAa,SAAS;IAEX,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAA0B;QACrD,MAAM,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;QAChE,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC,eAAe,MAAM,CAAC,wBAAwB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5G,OAAO,gBAAgB,KAAK,UAAU,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,GAAG,iBAAiB,GAAG,SAAS,CAAC,yBAAyB,CAAC,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvJ,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,OAA6B;QACzD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClF,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAA0B;QACtD,OAAO,gBAAgB,KAAK,iBAAiB,MAAM,CAAC,IAAI,EAAE,CAAC;IAC/D,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,OAA6B;QAC1D,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnF,CAAC;IAEM,MAAM,CAAC,yBAAyB,CAAC,MAA0B;QAC9D,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,WAAW,EAAE;YACvC,OAAO,EAAE,CAAC;SACb;QAED,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACzC,OAAO,aAAa,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,MAAM,CAAC,IAAI,GAAG,CAAC;SAC1E;QAED,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACpD,OAAO,YAAY,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC;SACjE;QAED,OAAO,aAAa,MAAM,CAAC,OAAO,IAAI,CAAC;IAC3C,CAAC;CACJ;AAnCD,8BAmCC"}
@@ -0,0 +1,2 @@
1
+ import { ColumnOptions } from "typeorm";
2
+ export declare const TableColumn: (options?: Pick<ColumnOptions, 'type'>) => <TFunction extends Function, Y>(target: object | TFunction, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TableColumn = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const typeorm_1 = require("typeorm");
6
+ const swagger_1 = require("@nestjs/swagger");
7
+ const get_api_type_from_column_function_1 = require("./get-api-type-from-column.function");
8
+ const TableColumn = (options) => {
9
+ const apiType = (0, get_api_type_from_column_function_1.getApiTypeFromColumn)(options === null || options === void 0 ? void 0 : options.type);
10
+ return (0, common_1.applyDecorators)((0, typeorm_1.Column)({ type: options === null || options === void 0 ? void 0 : options.type, nullable: false }), (0, swagger_1.ApiProperty)({ type: apiType }));
11
+ };
12
+ exports.TableColumn = TableColumn;
13
+ //# sourceMappingURL=table-column.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-column.decorator.js","sourceRoot":"","sources":["../../../../../libs/server-typeorm-postgres/src/lib/table-column.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAiD;AACjD,qCAAgD;AAChD,6CAA8C;AAC9C,2FAA2E;AAEpE,MAAM,WAAW,GAAG,CAAC,OAAqC,EAAE,EAAE;IACjE,MAAM,OAAO,GAAG,IAAA,wDAAoB,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,CAAC;IACpD,OAAO,IAAA,wBAAe,EAAC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,IAAA,qBAAW,EAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC,CAAC,CAAC;AAC3G,CAAC,CAAC;AAHW,QAAA,WAAW,eAGtB"}
@@ -0,0 +1,3 @@
1
+ export declare const Table: (EntityClass: {
2
+ name: string;
3
+ }) => <TFunction extends Function, Y>(target: object | TFunction, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Table = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const typeorm_1 = require("typeorm");
6
+ const lodash_snakecase_1 = require("lodash.snakecase");
7
+ const Table = (EntityClass) => {
8
+ const tableName = (0, lodash_snakecase_1.default)(EntityClass.name);
9
+ return (0, common_1.applyDecorators)((0, typeorm_1.Entity)(tableName));
10
+ };
11
+ exports.Table = Table;
12
+ //# sourceMappingURL=table.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.decorator.js","sourceRoot":"","sources":["../../../../../libs/server-typeorm-postgres/src/lib/table.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAiD;AACjD,qCAAiC;AACjC,uDAAqC;AAE9B,MAAM,KAAK,GAAG,CAAC,WAA6B,EAAE,EAAE;IACnD,MAAM,SAAS,GAAG,IAAA,0BAAK,EAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC1C,OAAO,IAAA,wBAAe,EAAC,IAAA,gBAAM,EAAC,SAAS,CAAC,CAAC,CAAC;AAC9C,CAAC,CAAC;AAHW,QAAA,KAAK,SAGhB"}
@@ -0,0 +1,18 @@
1
+ import { EntityManager, FindManyOptions, FindOneOptions, FindOptionsWhere } from 'typeorm';
2
+ import { QueryDeepPartialEntity } from 'typeorm/query-builder/QueryPartialEntity';
3
+ import { IEntityProvider } from './entity-provider.interface';
4
+ export declare class TypeOrmRepository<TEntity> implements IEntityProvider<TEntity, FindOneOptions<TEntity>, FindManyOptions<TEntity>, FindOptionsWhere<TEntity>, QueryDeepPartialEntity<TEntity>> {
5
+ private entityType;
6
+ entityManager: EntityManager;
7
+ constructor(entityType: any, entityManager: EntityManager);
8
+ getMany(options: FindManyOptions<TEntity>): Promise<TEntity[]>;
9
+ getOne(options: FindOneOptions<TEntity>): Promise<TEntity>;
10
+ postOne(body: Partial<TEntity>): Promise<TEntity>;
11
+ postMany(body: Partial<TEntity>[]): Promise<TEntity[]>;
12
+ delete(options: FindOptionsWhere<TEntity>): Promise<void>;
13
+ put(options: FindOptionsWhere<TEntity>, body: QueryDeepPartialEntity<TEntity>): Promise<void>;
14
+ patch(options: FindOptionsWhere<TEntity>, body: QueryDeepPartialEntity<TEntity>): Promise<void>;
15
+ protected get repo(): import("typeorm").Repository<import("typeorm").ObjectLiteral>;
16
+ protected insertAndReturn(entityToInsert: TEntity): Promise<TEntity>;
17
+ protected insertAndReturnMany(entitiesToInsert: TEntity[]): Promise<TEntity[]>;
18
+ }
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TypeOrmRepository = void 0;
4
+ const tslib_1 = require("tslib");
5
+ class TypeOrmRepository {
6
+ constructor(entityType, entityManager) {
7
+ this.entityType = entityType;
8
+ this.entityManager = entityManager;
9
+ }
10
+ getMany(options) {
11
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
12
+ return yield this.repo.find(options);
13
+ });
14
+ }
15
+ getOne(options) {
16
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
17
+ const results = yield this.getMany(options);
18
+ if ((results === null || results === void 0 ? void 0 : results.length) > 1) {
19
+ throw new Error(`${TypeOrmRepository.prototype.getOne.name} expects only 1 result but found ${results.length} results of entity type "${this.entityType}" for criteria ${JSON.stringify(options, null, 2)}`);
20
+ }
21
+ return results[0];
22
+ });
23
+ }
24
+ postOne(body) {
25
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
26
+ return yield this.insertAndReturn(body);
27
+ });
28
+ }
29
+ postMany(body) {
30
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
31
+ return yield this.insertAndReturnMany(body);
32
+ });
33
+ }
34
+ delete(options) {
35
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
36
+ return yield this.repo.delete(options);
37
+ });
38
+ }
39
+ put(options, body) {
40
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
41
+ yield this.repo.save(options, body);
42
+ });
43
+ }
44
+ patch(options, body) {
45
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
46
+ yield this.repo.update(options, body);
47
+ });
48
+ }
49
+ get repo() {
50
+ return this.entityManager.getRepository(this.entityType);
51
+ }
52
+ insertAndReturn(entityToInsert) {
53
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
54
+ return (yield this.insertAndReturnMany([entityToInsert]))[0];
55
+ });
56
+ }
57
+ insertAndReturnMany(entitiesToInsert) {
58
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
59
+ const insertionResult = yield this.repo
60
+ .createQueryBuilder()
61
+ .insert()
62
+ .values(entitiesToInsert)
63
+ .returning('*')
64
+ .execute();
65
+ const insertedEntity = insertionResult.generatedMaps;
66
+ return insertedEntity;
67
+ });
68
+ }
69
+ }
70
+ exports.TypeOrmRepository = TypeOrmRepository;
71
+ //# sourceMappingURL=type-orm.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-orm.repository.js","sourceRoot":"","sources":["../../../../../libs/server-typeorm-postgres/src/lib/type-orm.repository.ts"],"names":[],"mappings":";;;;AAUA,MAAa,iBAAiB;IAO5B,YAAoB,UAAe,EAAS,aAA4B;QAApD,eAAU,GAAV,UAAU,CAAK;QAAS,kBAAa,GAAb,aAAa,CAAe;IAAI,CAAC;IAEvE,OAAO,CAAC,OAAiC;;YAC7C,OAAO,MAAO,IAAI,CAAC,IAAI,CAAC,IAAY,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC;KAAA;IAEK,MAAM,CAAC,OAAgC;;YAC3C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAE5C,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,IAAG,CAAC,EAAE;gBACvB,MAAM,IAAI,KAAK,CAAC,GAAG,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,oCAAoC,OAAO,CAAC,MAAM,4BAA4B,IAAI,CAAC,UAAU,kBAAkB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;aAC9M;YAED,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;KAAA;IAEK,OAAO,CAAC,IAAsB;;YAClC,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,IAAe,CAAC,CAAC;QACrD,CAAC;KAAA;IAEK,QAAQ,CAAC,IAAwB;;YACrC,OAAO,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAiB,CAAC,CAAC;QAC3D,CAAC;KAAA;IAEK,MAAM,CAAC,OAAkC;;YAC7C,OAAO,MAAO,IAAI,CAAC,IAAI,CAAC,MAAc,CAAC,OAAO,CAAC,CAAC;QAClD,CAAC;KAAA;IAEK,GAAG,CAAC,OAAkC,EAAE,IAAqC;;YACjF,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC;KAAA;IAEK,KAAK,CAAC,OAAkC,EAAE,IAAqC;;YACnF,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC;KAAA;IAED,IAAc,IAAI;QAChB,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,UAAiB,CAAC,CAAC;IAClE,CAAC;IAEe,eAAe,CAAC,cAAuB;;YACrD,OAAO,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC;KAAA;IAEe,mBAAmB,CAAC,gBAA2B;;YAC7D,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,IAAI;iBACpC,kBAAkB,EAAE;iBACpB,MAAM,EAAE;iBACR,MAAM,CAAC,gBAAgB,CAAC;iBACxB,SAAS,CAAC,GAAG,CAAC;iBACd,OAAO,EAAE,CAAC;YAEb,MAAM,cAAc,GAClB,eAAe,CAAC,aAA0B,CAAC;YAE7C,OAAO,cAAc,CAAC;QACxB,CAAC;KAAA;CACF;AAhED,8CAgEC"}