@koalarx/nest 0.0.3
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/LICENSE +21 -0
- package/README.md +7 -0
- package/common/backgroud-services/cron-service/cron-job.d.ts +15 -0
- package/common/backgroud-services/cron-service/cron-job.js +47 -0
- package/common/backgroud-services/event-service/event-class.d.ts +5 -0
- package/common/backgroud-services/event-service/event-class.js +11 -0
- package/common/backgroud-services/event-service/event-handler.d.ts +5 -0
- package/common/backgroud-services/event-service/event-handler.js +10 -0
- package/common/backgroud-services/event-service/event-is-trigger.d.ts +3 -0
- package/common/backgroud-services/event-service/event-is-trigger.js +7 -0
- package/common/backgroud-services/event-service/event-job.d.ts +10 -0
- package/common/backgroud-services/event-service/event-job.js +19 -0
- package/common/backgroud-services/event-service/event-queue.d.ts +17 -0
- package/common/backgroud-services/event-service/event-queue.js +55 -0
- package/common/controllers/base.controller.d.ts +4 -0
- package/common/controllers/base.controller.js +6 -0
- package/common/controllers/created-registre-response.base.d.ts +3 -0
- package/common/controllers/created-registre-response.base.js +17 -0
- package/common/controllers/list-response.base.d.ts +4 -0
- package/common/controllers/list-response.base.js +17 -0
- package/common/controllers/router-config.base.d.ts +7 -0
- package/common/controllers/router-config.base.js +18 -0
- package/common/controllers/schemas/document-number.schema.d.ts +1 -0
- package/common/controllers/schemas/document-number.schema.js +27 -0
- package/common/controllers/schemas/email.schema.d.ts +1 -0
- package/common/controllers/schemas/email.schema.js +14 -0
- package/common/controllers/schemas/list-query.schema.d.ts +17 -0
- package/common/controllers/schemas/list-query.schema.js +19 -0
- package/common/controllers/schemas/native-enum.schema.d.ts +7 -0
- package/common/controllers/schemas/native-enum.schema.js +29 -0
- package/common/errors/bad-request.error.d.ts +4 -0
- package/common/errors/bad-request.error.js +9 -0
- package/common/errors/conflict.error.d.ts +3 -0
- package/common/errors/conflict.error.js +9 -0
- package/common/errors/no-content.error.d.ts +4 -0
- package/common/errors/no-content.error.js +9 -0
- package/common/errors/not-allowed.error.d.ts +4 -0
- package/common/errors/not-allowed.error.js +9 -0
- package/common/errors/resource-not-found.error.d.ts +4 -0
- package/common/errors/resource-not-found.error.js +9 -0
- package/common/errors/use-case-error.d.ts +3 -0
- package/common/errors/use-case-error.js +2 -0
- package/common/errors/user-already-exist.error.d.ts +3 -0
- package/common/errors/user-already-exist.error.js +9 -0
- package/common/errors/wrong-credentials.error.d.ts +3 -0
- package/common/errors/wrong-credentials.error.js +9 -0
- package/common/mediator/request-handler.base.d.ts +4 -0
- package/common/mediator/request-handler.base.js +6 -0
- package/common/mediator/request-result.d.ts +15 -0
- package/common/mediator/request-result.js +37 -0
- package/common/mediator/request-validator.base.d.ts +7 -0
- package/common/mediator/request-validator.base.js +17 -0
- package/common/models/pagination-params.d.ts +14 -0
- package/common/models/pagination-params.js +60 -0
- package/core/database/entity.d.ts +8 -0
- package/core/database/entity.js +23 -0
- package/core/database/repository.base.d.ts +16 -0
- package/core/database/repository.base.js +27 -0
- package/core/koala-app.d.ts +40 -0
- package/core/koala-app.js +94 -0
- package/core/koala-nest-database.module.d.ts +13 -0
- package/core/koala-nest-database.module.js +37 -0
- package/core/koala-nest-http.module.d.ts +12 -0
- package/core/koala-nest-http.module.js +38 -0
- package/core/koala-nest.module.d.ts +13 -0
- package/core/koala-nest.module.js +52 -0
- package/core/utils/env.config.d.ts +6 -0
- package/core/utils/env.config.js +18 -0
- package/core/utils/filter-request-params.d.ts +13 -0
- package/core/utils/filter-request-params.js +22 -0
- package/core/utils/interfaces/icomparable.d.ts +5 -0
- package/core/utils/interfaces/icomparable.js +6 -0
- package/core/utils/list.d.ts +24 -0
- package/core/utils/list.js +94 -0
- package/core/utils/promise-all.d.ts +7 -0
- package/core/utils/promise-all.js +19 -0
- package/core/utils/set-mask-document-number.d.ts +1 -0
- package/core/utils/set-mask-document-number.js +14 -0
- package/decorators/api-exclude-endpoint-diff-develop.decorator.d.ts +1 -0
- package/decorators/api-exclude-endpoint-diff-develop.decorator.js +9 -0
- package/decorators/api-property-only-develop.decorator.d.ts +2 -0
- package/decorators/api-property-only-develop.decorator.js +9 -0
- package/decorators/cookies.decorator.d.ts +1 -0
- package/decorators/cookies.decorator.js +8 -0
- package/decorators/is-cnpj.decorator.d.ts +2 -0
- package/decorators/is-cnpj.decorator.js +71 -0
- package/decorators/is-public.decorator.d.ts +2 -0
- package/decorators/is-public.decorator.js +7 -0
- package/filters/domain-errors.filter.d.ts +16 -0
- package/filters/domain-errors.filter.js +62 -0
- package/filters/global-exception.filter.d.ts +7 -0
- package/filters/global-exception.filter.js +39 -0
- package/filters/prisma-validation-exception.filter.d.ts +8 -0
- package/filters/prisma-validation-exception.filter.js +53 -0
- package/filters/zod-errors.filter.d.ts +7 -0
- package/filters/zod-errors.filter.js +30 -0
- package/package.json +91 -0
- package/services/env/env.d.ts +25 -0
- package/services/env/env.js +13 -0
- package/services/env/env.module.d.ts +2 -0
- package/services/env/env.module.js +19 -0
- package/services/env/env.service.d.ts +14 -0
- package/services/env/env.service.js +22 -0
- package/services/logging/ilogging.service.d.ts +16 -0
- package/services/logging/ilogging.service.js +6 -0
- package/services/logging/logging.service.d.ts +4 -0
- package/services/logging/logging.service.js +19 -0
- package/services/prisma/prisma-client-with-custom-transaction.interface.d.ts +8 -0
- package/services/prisma/prisma-client-with-custom-transaction.interface.js +2 -0
- package/services/prisma/prisma-transactional-client.d.ts +11 -0
- package/services/prisma/prisma-transactional-client.js +25 -0
- package/services/prisma/prisma.service.d.ts +13 -0
- package/services/prisma/prisma.service.js +38 -0
- package/services/prisma/prisma.types.d.ts +36 -0
- package/services/prisma/prisma.types.js +15 -0
- package/services/redis/iredis.service.d.ts +5 -0
- package/services/redis/iredis.service.js +6 -0
- package/services/redis/redis.service.d.ts +13 -0
- package/services/redis/redis.service.js +53 -0
- package/services/redlock/ired-lock.service.d.ts +4 -0
- package/services/redlock/ired-lock.service.js +6 -0
- package/services/redlock/red-lock.service.d.ts +9 -0
- package/services/redlock/red-lock.service.js +40 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.EnvModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const env_service_1 = require("./env.service");
|
|
12
|
+
let EnvModule = exports.EnvModule = class EnvModule {
|
|
13
|
+
};
|
|
14
|
+
exports.EnvModule = EnvModule = __decorate([
|
|
15
|
+
(0, common_1.Module)({
|
|
16
|
+
providers: [env_service_1.EnvService],
|
|
17
|
+
exports: [env_service_1.EnvService],
|
|
18
|
+
})
|
|
19
|
+
], EnvModule);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ConfigService } from '@nestjs/config';
|
|
2
|
+
import { Env } from './env';
|
|
3
|
+
export declare class EnvService {
|
|
4
|
+
private readonly configService;
|
|
5
|
+
constructor(configService: ConfigService<Env, true>);
|
|
6
|
+
get<T extends keyof Env>(key: T): import("@nestjs/config").PathValue<{
|
|
7
|
+
NODE_ENV: "test" | "develop" | "staging" | "production";
|
|
8
|
+
PORT: number;
|
|
9
|
+
PRISMA_QUERY_LOG: boolean;
|
|
10
|
+
SWAGGER_USERNAME: string;
|
|
11
|
+
SWAGGER_PASSWORD: string;
|
|
12
|
+
REDIS_CONNECTION_STRING: string;
|
|
13
|
+
}, T>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.EnvService = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
let EnvService = exports.EnvService = class EnvService {
|
|
12
|
+
configService;
|
|
13
|
+
constructor(configService) {
|
|
14
|
+
this.configService = configService;
|
|
15
|
+
}
|
|
16
|
+
get(key) {
|
|
17
|
+
return this.configService.get(key, { infer: true });
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
exports.EnvService = EnvService = __decorate([
|
|
21
|
+
(0, common_1.Injectable)()
|
|
22
|
+
], EnvService);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface LoggingReportProps {
|
|
2
|
+
loggedUsername: string;
|
|
3
|
+
packageName: string;
|
|
4
|
+
error: Error;
|
|
5
|
+
httpRequest?: {
|
|
6
|
+
method: string;
|
|
7
|
+
endpoint: string;
|
|
8
|
+
queryParams?: string;
|
|
9
|
+
payload?: object;
|
|
10
|
+
statusCode: number;
|
|
11
|
+
response?: object;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export declare abstract class ILoggingService {
|
|
15
|
+
abstract report(data: LoggingReportProps): Promise<void>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.LoggingService = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
let LoggingService = exports.LoggingService = class LoggingService {
|
|
12
|
+
async report(data) {
|
|
13
|
+
console.log(JSON.stringify({ ...data, error: undefined }, null, 2));
|
|
14
|
+
console.error(data.error);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
exports.LoggingService = LoggingService = __decorate([
|
|
18
|
+
(0, common_1.Injectable)()
|
|
19
|
+
], LoggingService);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Prisma } from '@prisma/client';
|
|
2
|
+
export interface PrismaClientWithCustomTransaction extends Readonly<Prisma.TransactionClient> {
|
|
3
|
+
withTransaction<F>(fn: (prisma: Prisma.TransactionClient) => Promise<F>, options?: {
|
|
4
|
+
maxWait?: number | undefined;
|
|
5
|
+
timeout?: number | undefined;
|
|
6
|
+
isolationLevel?: Prisma.TransactionIsolationLevel | undefined;
|
|
7
|
+
}): Promise<F>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Prisma, PrismaPromise } from '@prisma/client';
|
|
2
|
+
import { PrismaClientWithCustomTransaction } from './prisma-client-with-custom-transaction.interface';
|
|
3
|
+
export declare class PrismaTransactionalClient implements PrismaClientWithCustomTransaction {
|
|
4
|
+
protected readonly transactionalClient: Prisma.TransactionClient;
|
|
5
|
+
constructor(transactionalClient: Prisma.TransactionClient);
|
|
6
|
+
withTransaction<F>(fn: (prisma: Prisma.TransactionClient) => Promise<F>): Promise<F>;
|
|
7
|
+
$executeRaw(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): PrismaPromise<number>;
|
|
8
|
+
$executeRawUnsafe(query: string, ...values: any[]): PrismaPromise<number>;
|
|
9
|
+
$queryRaw<T = unknown>(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): PrismaPromise<T>;
|
|
10
|
+
$queryRawUnsafe<T = unknown>(query: string, ...values: any[]): PrismaPromise<T>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PrismaTransactionalClient = void 0;
|
|
4
|
+
class PrismaTransactionalClient {
|
|
5
|
+
transactionalClient;
|
|
6
|
+
constructor(transactionalClient) {
|
|
7
|
+
this.transactionalClient = transactionalClient;
|
|
8
|
+
}
|
|
9
|
+
async withTransaction(fn) {
|
|
10
|
+
return await fn(this.transactionalClient);
|
|
11
|
+
}
|
|
12
|
+
$executeRaw(query, ...values) {
|
|
13
|
+
return this.transactionalClient.$executeRaw(query, ...values);
|
|
14
|
+
}
|
|
15
|
+
$executeRawUnsafe(query, ...values) {
|
|
16
|
+
return this.transactionalClient.$executeRawUnsafe(query, ...values);
|
|
17
|
+
}
|
|
18
|
+
$queryRaw(query, ...values) {
|
|
19
|
+
return this.transactionalClient.$queryRaw(query, ...values);
|
|
20
|
+
}
|
|
21
|
+
$queryRawUnsafe(query, ...values) {
|
|
22
|
+
return this.transactionalClient.$queryRawUnsafe(query, ...values);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.PrismaTransactionalClient = PrismaTransactionalClient;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { OnModuleDestroy, OnModuleInit } from '@nestjs/common';
|
|
2
|
+
import { Prisma, PrismaClient } from '@prisma/client';
|
|
3
|
+
import { PrismaClientWithCustomTransaction } from './prisma-client-with-custom-transaction.interface';
|
|
4
|
+
export declare class PrismaService extends PrismaClient implements OnModuleInit, OnModuleDestroy, PrismaClientWithCustomTransaction {
|
|
5
|
+
constructor();
|
|
6
|
+
onModuleInit(): Promise<void>;
|
|
7
|
+
onModuleDestroy(): Promise<void>;
|
|
8
|
+
withTransaction<F>(fn: (prisma: Prisma.TransactionClient) => Promise<F>, options?: {
|
|
9
|
+
maxWait?: number;
|
|
10
|
+
timeout?: number;
|
|
11
|
+
isolationLevel?: Prisma.TransactionIsolationLevel;
|
|
12
|
+
}): Promise<F>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.PrismaService = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const client_1 = require("@prisma/client");
|
|
12
|
+
let PrismaService = exports.PrismaService = class PrismaService extends client_1.PrismaClient {
|
|
13
|
+
constructor() {
|
|
14
|
+
super({
|
|
15
|
+
log: [
|
|
16
|
+
{
|
|
17
|
+
emit: 'event',
|
|
18
|
+
level: 'query',
|
|
19
|
+
},
|
|
20
|
+
],
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
async onModuleInit() {
|
|
24
|
+
return this.$connect();
|
|
25
|
+
}
|
|
26
|
+
onModuleDestroy() {
|
|
27
|
+
return this.$disconnect();
|
|
28
|
+
}
|
|
29
|
+
withTransaction(fn, options) {
|
|
30
|
+
return this.$transaction(fn, options ?? {
|
|
31
|
+
maxWait: 20000,
|
|
32
|
+
timeout: 20000,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
exports.PrismaService = PrismaService = __decorate([
|
|
37
|
+
(0, common_1.Injectable)()
|
|
38
|
+
], PrismaService);
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Prisma, PrismaClient } from '@prisma/client';
|
|
2
|
+
import PrismaRuntime from '@prisma/client/runtime/library';
|
|
3
|
+
import PrismaTypes = PrismaRuntime.Types;
|
|
4
|
+
export { PrismaTypes };
|
|
5
|
+
export { Prisma, PrismaClient } from '@prisma/client';
|
|
6
|
+
export * as PrismaRuntime from '@prisma/client/runtime/library';
|
|
7
|
+
export type ModelName = Prisma.ModelName;
|
|
8
|
+
export type PrismaModelName = ModelName;
|
|
9
|
+
export type PrismaModelProp<N extends ModelName = ModelName> = Uncapitalize<N>;
|
|
10
|
+
export type PrismaModelType<N extends ModelName = ModelName> = Prisma.TypeMap['model'][N];
|
|
11
|
+
export type PrismaModelPayload<N extends ModelName = ModelName> = PrismaModelType<N>['payload'];
|
|
12
|
+
export type PrismaModelDelegate<N extends ModelName = ModelName> = PrismaClient[PrismaModelProp<N>];
|
|
13
|
+
export type PrismaModel<N extends ModelName = ModelName> = PrismaTypes.Result.DefaultSelection<PrismaModelPayload<N>>;
|
|
14
|
+
export type PrismaModels = {
|
|
15
|
+
[N in Prisma.ModelName]: PrismaModel<N>;
|
|
16
|
+
};
|
|
17
|
+
export type PrismaModelProps = {
|
|
18
|
+
[N in Prisma.ModelName]: PrismaModelProp<N>;
|
|
19
|
+
};
|
|
20
|
+
export type PrismaModelTypes = {
|
|
21
|
+
[N in Prisma.ModelName]: PrismaModelType<N>;
|
|
22
|
+
};
|
|
23
|
+
export type PrismaModelPayloads = {
|
|
24
|
+
[N in Prisma.ModelName]: PrismaModelPayload<N>;
|
|
25
|
+
};
|
|
26
|
+
export type PrismaModelDelegates = {
|
|
27
|
+
[N in Prisma.ModelName]: PrismaModelDelegate<N>;
|
|
28
|
+
};
|
|
29
|
+
export type FindManyArgs<N extends ModelName> = PrismaModelType<N>['operations']['findMany']['args'];
|
|
30
|
+
export type FindUniqueArgs<N extends ModelName> = PrismaModelType<N>['operations']['findUnique']['args'];
|
|
31
|
+
export type WhereInput<N extends ModelName = ModelName> = NonNullable<FindManyArgs<N>['where']>;
|
|
32
|
+
export type WhereAnd<N extends ModelName = ModelName> = NonNullable<WhereInput<N>['AND']>;
|
|
33
|
+
export type WhereOr<N extends ModelName = ModelName> = NonNullable<WhereInput<N>['OR']>;
|
|
34
|
+
export type WhereUniqueInput<N extends ModelName = ModelName> = NonNullable<FindUniqueArgs<N>['where']>;
|
|
35
|
+
export declare function getPrismaModelProp<N extends PrismaModelName>(name: N): Uncapitalize<N>;
|
|
36
|
+
export declare function getPrismaDelegate<N extends PrismaModelName>(name: N, prisma: PrismaClient): PrismaModelDelegate<N>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPrismaDelegate = exports.getPrismaModelProp = exports.PrismaRuntime = exports.PrismaClient = exports.Prisma = void 0;
|
|
4
|
+
var client_1 = require("@prisma/client");
|
|
5
|
+
Object.defineProperty(exports, "Prisma", { enumerable: true, get: function () { return client_1.Prisma; } });
|
|
6
|
+
Object.defineProperty(exports, "PrismaClient", { enumerable: true, get: function () { return client_1.PrismaClient; } });
|
|
7
|
+
exports.PrismaRuntime = require("@prisma/client/runtime/library");
|
|
8
|
+
function getPrismaModelProp(name) {
|
|
9
|
+
return `${name.charAt(0).toLowerCase()}${name.slice(1)}`;
|
|
10
|
+
}
|
|
11
|
+
exports.getPrismaModelProp = getPrismaModelProp;
|
|
12
|
+
function getPrismaDelegate(name, prisma) {
|
|
13
|
+
return prisma[getPrismaModelProp(name)];
|
|
14
|
+
}
|
|
15
|
+
exports.getPrismaDelegate = getPrismaDelegate;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { OnModuleDestroy } from '@nestjs/common';
|
|
2
|
+
import { EnvService } from '../env/env.service';
|
|
3
|
+
import { IRedisService } from './iredis.service';
|
|
4
|
+
export declare class RedisService implements IRedisService, OnModuleDestroy {
|
|
5
|
+
private readonly redisClient;
|
|
6
|
+
private readonly environment;
|
|
7
|
+
constructor(env: EnvService);
|
|
8
|
+
onModuleDestroy(): void;
|
|
9
|
+
getCache(key: string): Promise<string | null>;
|
|
10
|
+
setCache(key: string, ttlSecondsCache: number, payload: any): Promise<void>;
|
|
11
|
+
deleteCache(key: string): Promise<void>;
|
|
12
|
+
private getKeyCache;
|
|
13
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.RedisService = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const ioredis_1 = require("ioredis");
|
|
12
|
+
const env_config_1 = require("../../core/utils/env.config");
|
|
13
|
+
let RedisService = exports.RedisService = class RedisService {
|
|
14
|
+
redisClient;
|
|
15
|
+
environment;
|
|
16
|
+
constructor(env) {
|
|
17
|
+
if (!env_config_1.EnvConfig.isEnvTest) {
|
|
18
|
+
const url = new URL(env.get('REDIS_CONNECTION_STRING'));
|
|
19
|
+
this.environment = env.get('NODE_ENV');
|
|
20
|
+
this.redisClient = new ioredis_1.default({
|
|
21
|
+
host: url.hostname,
|
|
22
|
+
port: Number(url.port),
|
|
23
|
+
password: url.password,
|
|
24
|
+
username: url.username,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
onModuleDestroy() {
|
|
29
|
+
this.redisClient.disconnect();
|
|
30
|
+
}
|
|
31
|
+
async getCache(key) {
|
|
32
|
+
if (env_config_1.EnvConfig.isEnvTest) {
|
|
33
|
+
return '';
|
|
34
|
+
}
|
|
35
|
+
return await this.redisClient.get(this.getKeyCache(key));
|
|
36
|
+
}
|
|
37
|
+
async setCache(key, ttlSecondsCache, payload) {
|
|
38
|
+
if (!env_config_1.EnvConfig.isEnvTest) {
|
|
39
|
+
await this.redisClient.set(this.getKeyCache(key), JSON.stringify(payload), 'EX', ttlSecondsCache);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async deleteCache(key) {
|
|
43
|
+
if (!env_config_1.EnvConfig.isEnvTest) {
|
|
44
|
+
await this.redisClient.del(this.getKeyCache(key));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
getKeyCache(key) {
|
|
48
|
+
return `${this.environment}:app:${key}`;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
exports.RedisService = RedisService = __decorate([
|
|
52
|
+
(0, common_1.Injectable)()
|
|
53
|
+
], RedisService);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IRedisService } from '../redis/iredis.service';
|
|
2
|
+
import { IRedLockService } from './ired-lock.service';
|
|
3
|
+
export declare class RedLockService implements IRedLockService {
|
|
4
|
+
private readonly redisService;
|
|
5
|
+
constructor(redisService: IRedisService);
|
|
6
|
+
acquiredLock(key: string, ttlSecondsLock: number): Promise<boolean>;
|
|
7
|
+
releaseLock(key: string): Promise<void>;
|
|
8
|
+
private getLockKey;
|
|
9
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.RedLockService = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const env_config_1 = require("../../core/utils/env.config");
|
|
12
|
+
let RedLockService = exports.RedLockService = class RedLockService {
|
|
13
|
+
redisService;
|
|
14
|
+
constructor(redisService) {
|
|
15
|
+
this.redisService = redisService;
|
|
16
|
+
}
|
|
17
|
+
async acquiredLock(key, ttlSecondsLock) {
|
|
18
|
+
if (env_config_1.EnvConfig.isEnvTest) {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
const lockKey = this.getLockKey(key);
|
|
22
|
+
const canLock = await this.redisService.getCache(lockKey);
|
|
23
|
+
if (canLock) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
await this.redisService.setCache(lockKey, ttlSecondsLock, 'RedLockService');
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
async releaseLock(key) {
|
|
30
|
+
if (!env_config_1.EnvConfig.isEnvTest) {
|
|
31
|
+
await this.redisService.deleteCache(this.getLockKey(key));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
getLockKey(key) {
|
|
35
|
+
return `redLock:${key}`;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
exports.RedLockService = RedLockService = __decorate([
|
|
39
|
+
(0, common_1.Injectable)()
|
|
40
|
+
], RedLockService);
|