@triproject/nestjs-core 1.0.6 → 1.0.13
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/.swcrc +24 -0
- package/dist/bootstrap.js +1 -43
- package/dist/config.js +1 -50
- package/dist/controllers/controller.js +1 -56
- package/dist/drivers/cache/cache.d.ts +1 -1
- package/dist/drivers/cache/cache.driver.js +1 -22
- package/dist/drivers/cache/cache.js +1 -92
- package/dist/drivers/cache/index.js +1 -19
- package/dist/drivers/cache/redis.js +1 -52
- package/dist/drivers/db/db.helper.js +1 -217
- package/dist/drivers/db/db.module.js +1 -44
- package/dist/drivers/db/db.service.js +1 -49
- package/dist/drivers/db/index.js +1 -21
- package/dist/drivers/db/migration.d.ts +133 -5
- package/dist/drivers/db/migration.js +1 -81
- package/dist/drivers/db/repository.js +1 -255
- package/dist/drivers/encryptions/encryption.js +1 -50
- package/dist/drivers/encryptions/encryption.module.js +1 -24
- package/dist/drivers/encryptions/index.js +1 -19
- package/dist/drivers/encryptions/jwt.js +1 -46
- package/dist/drivers/encryptions/password-hash.js +1 -38
- package/dist/drivers/encryptions/snap.signature.js +1 -110
- package/dist/drivers/logger/app.logger.js +2 -183
- package/dist/drivers/logger/cloudwatch.d.ts +18 -0
- package/dist/drivers/logger/cloudwatch.js +1 -0
- package/dist/drivers/logger/cloudwatch.logger.d.ts +1 -0
- package/dist/drivers/logger/cloudwatch.logger.js +1 -0
- package/dist/drivers/logger/index.js +1 -18
- package/dist/drivers/logger/slack.logger.js +1 -24
- package/dist/drivers/mail/index.js +1 -22
- package/dist/drivers/mail/mail-template.js +8 -41
- package/dist/drivers/mail/mail.config.js +1 -4
- package/dist/drivers/mail/mail.js +13 -73
- package/dist/drivers/mail/mail.module.js +1 -26
- package/dist/drivers/mail/mail.queue.js +1 -37
- package/dist/drivers/mail/mailer.js +1 -62
- package/dist/drivers/notifications/index.js +1 -21
- package/dist/drivers/notifications/notification.config.js +1 -4
- package/dist/drivers/notifications/notification.module.js +1 -25
- package/dist/drivers/notifications/notification.queue.js +1 -37
- package/dist/drivers/notifications/push-notification.js +1 -75
- package/dist/drivers/notifications/slack.js +1 -95
- package/dist/drivers/queues/app.queue.js +1 -66
- package/dist/drivers/queues/index.js +1 -18
- package/dist/drivers/queues/queue.module.js +1 -41
- package/dist/helpers/exception.helper.js +1 -71
- package/dist/helpers/http.helper.js +1 -134
- package/dist/helpers/swagger.helper.js +1 -287
- package/dist/helpers/totp.helper.js +1 -30
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -24
- package/dist/middlewares/log.middleware.js +1 -59
- package/dist/types.d.js +1 -0
- package/package.json +27 -14
package/.swcrc
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/swcrc",
|
|
3
|
+
"jsc": {
|
|
4
|
+
"parser": {
|
|
5
|
+
"syntax": "typescript",
|
|
6
|
+
"decorators": true
|
|
7
|
+
},
|
|
8
|
+
"transform": {
|
|
9
|
+
"decoratorMetadata": true,
|
|
10
|
+
"legacyDecorator": true
|
|
11
|
+
},
|
|
12
|
+
"target": "esnext",
|
|
13
|
+
"keepClassNames": true,
|
|
14
|
+
"minify": {
|
|
15
|
+
"compress": true,
|
|
16
|
+
"mangle": false
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"module": {
|
|
20
|
+
"type": "commonjs"
|
|
21
|
+
},
|
|
22
|
+
"minify": true,
|
|
23
|
+
"sourceMaps": false
|
|
24
|
+
}
|
package/dist/bootstrap.js
CHANGED
|
@@ -1,43 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.bootstrap = bootstrap;
|
|
7
|
-
const common_1 = require("@nestjs/common");
|
|
8
|
-
const core_1 = require("@nestjs/core");
|
|
9
|
-
const cookie_parser_1 = __importDefault(require("cookie-parser"));
|
|
10
|
-
const helmet_1 = __importDefault(require("helmet"));
|
|
11
|
-
const config_1 = require("./config");
|
|
12
|
-
const app_logger_1 = require("./drivers/logger/app.logger");
|
|
13
|
-
const http_helper_1 = require("./helpers/http.helper");
|
|
14
|
-
async function bootstrap(module, swaggerSetup) {
|
|
15
|
-
const logger = new app_logger_1.AppLogger(`Bootstrap App`);
|
|
16
|
-
const app = await core_1.NestFactory.create(module, { rawBody: true, logger });
|
|
17
|
-
app.use((0, cookie_parser_1.default)());
|
|
18
|
-
app.useGlobalPipes(new common_1.ValidationPipe({
|
|
19
|
-
skipMissingProperties: true,
|
|
20
|
-
whitelist: true,
|
|
21
|
-
transform: true,
|
|
22
|
-
transformOptions: {
|
|
23
|
-
enableImplicitConversion: true,
|
|
24
|
-
},
|
|
25
|
-
}));
|
|
26
|
-
app.use((0, helmet_1.default)());
|
|
27
|
-
app.useGlobalFilters(new http_helper_1.HttpExceptionFilter());
|
|
28
|
-
app.useGlobalInterceptors(new http_helper_1.TransformResponseInterceptor());
|
|
29
|
-
app.enableCors({
|
|
30
|
-
origin: config_1.ALLOWED_ORIGINS,
|
|
31
|
-
credentials: true,
|
|
32
|
-
});
|
|
33
|
-
if (swaggerSetup)
|
|
34
|
-
swaggerSetup(app);
|
|
35
|
-
await app
|
|
36
|
-
.listen(config_1.APP_PORT)
|
|
37
|
-
.then(() => {
|
|
38
|
-
logger.log(`Server started on port ${config_1.APP_PORT}`);
|
|
39
|
-
if (swaggerSetup)
|
|
40
|
-
logger.log(`Swagger docs available at http://localhost:${config_1.APP_PORT}/docs`);
|
|
41
|
-
})
|
|
42
|
-
.catch((error) => logger.error('Failed to start server', error));
|
|
43
|
-
}
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"bootstrap",{enumerable:!0,get:function(){return bootstrap}});let _common=require("@nestjs/common"),_core=require("@nestjs/core"),_cookieparser=/*#__PURE__*/_interop_require_default(require("cookie-parser")),_helmet=/*#__PURE__*/_interop_require_default(require("helmet")),_config=require("./config"),_applogger=require("./drivers/logger/app.logger"),_httphelper=require("./helpers/http.helper");function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}async function bootstrap(module,swaggerSetup){let logger=new _applogger.AppLogger("Bootstrap App"),app=await _core.NestFactory.create(module,{rawBody:!0,logger});app.use((0,_cookieparser.default)()),app.useGlobalPipes(new _common.ValidationPipe({skipMissingProperties:!0,whitelist:!0,transform:!0,transformOptions:{enableImplicitConversion:!0}})),app.use((0,_helmet.default)()),app.useGlobalFilters(new _httphelper.HttpExceptionFilter),app.useGlobalInterceptors(new _httphelper.TransformResponseInterceptor),app.enableCors({origin:_config.ALLOWED_ORIGINS,credentials:!0}),swaggerSetup&&swaggerSetup(app),await app.listen(_config.APP_PORT).then(()=>{logger.log(`Server started on port ${_config.APP_PORT}`),swaggerSetup&&logger.log(`Swagger docs available at http://localhost:${_config.APP_PORT}/docs`)}).catch(error=>logger.error("Failed to start server",error))}
|
package/dist/config.js
CHANGED
|
@@ -1,50 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ONESIGNAL_REST_API_KEY = exports.ONESIGNAL_APP_ID = exports.APP_LOGO_URL = exports.LANDING_PAGE_URL = exports.SLACK_ERROR_WEBHOOK_URL = exports.MAIL_EMAIL_SUPPORT = exports.MAIL_TO_CC = exports.MAIL_FROM_EMAIL = exports.MAIL_FROM_NAME = exports.MAIL_ENCRYPTION = exports.MAIL_PASSWORD = exports.MAIL_USERNAME = exports.MAIL_PORT = exports.MAIL_HOST = exports.MAIL_MAILER = exports.REDIS_TLS = exports.REDIS_PASSWORD = exports.REDIS_DB = exports.REDIS_PORT = exports.REDIS_HOST = exports.DB_ENTITIES_PATH = exports.DB_POOL_IDLE = exports.DB_POOL_ACQUIRE = exports.DB_POOL_MIN = exports.DB_MAX_POOL_SIZE = exports.DB_SSL = exports.DB_REPLICA_PORT = exports.DB_REPLICA_HOST = exports.DB_NAME = exports.DB_PASSWORD = exports.DB_USER = exports.DB_PORT = exports.DB_HOST = exports.DB_DIALECT = exports.JWT_PRIVATE_KEY = exports.JWT_PUBLIC_KEY = exports.ENCRYPTION_KEY = exports.PASSWORD_HASH_SECRET = exports.ALLOWED_ORIGINS = exports.SESSION_EXPIRATION = exports.SESSION_KEY = exports.APP_KEY = exports.APP_PORT = exports.APP_NAME = exports.NODE_ENV = void 0;
|
|
4
|
-
const dotenv_1 = require("dotenv");
|
|
5
|
-
(0, dotenv_1.config)({ quiet: true });
|
|
6
|
-
exports.NODE_ENV = process.env.NODE_ENV ?? 'development';
|
|
7
|
-
exports.APP_NAME = process.env.APP_NAME ?? 'MyApp';
|
|
8
|
-
exports.APP_PORT = Number(process.env.APP_PORT) ?? 3000;
|
|
9
|
-
exports.APP_KEY = process.env.APP_KEY ?? '';
|
|
10
|
-
exports.SESSION_KEY = process.env.SESSION_KEY ?? 'APP_SESSION';
|
|
11
|
-
exports.SESSION_EXPIRATION = Number(process.env.SESSION_EXPIRATION) ?? 86400;
|
|
12
|
-
exports.ALLOWED_ORIGINS = (process.env.ALLOWED_ORIGINS ?? 'http://localhost:3000').split(',');
|
|
13
|
-
exports.PASSWORD_HASH_SECRET = process.env.PASSWORD_HASH_SECRET ?? 'default_secret';
|
|
14
|
-
exports.ENCRYPTION_KEY = process.env.ENCRYPTION_KEY;
|
|
15
|
-
exports.JWT_PUBLIC_KEY = process.env.JWT_PUBLIC_KEY ?? '';
|
|
16
|
-
exports.JWT_PRIVATE_KEY = process.env.JWT_PRIVATE_KEY ?? '';
|
|
17
|
-
exports.DB_DIALECT = 'postgres';
|
|
18
|
-
exports.DB_HOST = process.env.DB_HOST ?? 'localhost';
|
|
19
|
-
exports.DB_PORT = Number(process.env.DB_PORT) ?? 5432;
|
|
20
|
-
exports.DB_USER = process.env.DB_USER ?? 'postgres';
|
|
21
|
-
exports.DB_PASSWORD = process.env.DB_PASSWORD ?? 'password';
|
|
22
|
-
exports.DB_NAME = process.env.DB_NAME ?? 'postgres';
|
|
23
|
-
exports.DB_REPLICA_HOST = process.env.DB_REPLICA_HOST ?? 'localhost';
|
|
24
|
-
exports.DB_REPLICA_PORT = Number(process.env.DB_REPLICA_PORT) ?? 5432;
|
|
25
|
-
exports.DB_SSL = (process.env.DB_SSL ?? 'false')?.toLowerCase() === 'true';
|
|
26
|
-
exports.DB_MAX_POOL_SIZE = Number(process.env.DB_MAX_POOL_SIZE ?? 10);
|
|
27
|
-
exports.DB_POOL_MIN = Number(process.env.DB_POOL_MIN ?? 0);
|
|
28
|
-
exports.DB_POOL_ACQUIRE = Number(process.env.DB_POOL_ACQUIRE ?? 30000);
|
|
29
|
-
exports.DB_POOL_IDLE = Number(process.env.DB_POOL_IDLE ?? 10000);
|
|
30
|
-
exports.DB_ENTITIES_PATH = './dist/**/**/*.entity.*';
|
|
31
|
-
exports.REDIS_HOST = process.env.REDIS_HOST ?? 'localhost';
|
|
32
|
-
exports.REDIS_PORT = Number(process.env.REDIS_PORT) ?? 6379;
|
|
33
|
-
exports.REDIS_DB = Number(process.env.REDIS_DB) ?? 0;
|
|
34
|
-
exports.REDIS_PASSWORD = process.env.REDIS_PASSWORD ?? '';
|
|
35
|
-
exports.REDIS_TLS = (process.env.REDIS_TLS ?? 'false')?.toLowerCase() === 'true';
|
|
36
|
-
exports.MAIL_MAILER = process.env.MAIL_MAILER ?? 'smtp';
|
|
37
|
-
exports.MAIL_HOST = process.env.MAIL_HOST ?? '127.0.0.1';
|
|
38
|
-
exports.MAIL_PORT = +(process.env.MAIL_PORT ?? 1025);
|
|
39
|
-
exports.MAIL_USERNAME = process.env.MAIL_USERNAME ?? '';
|
|
40
|
-
exports.MAIL_PASSWORD = process.env.MAIL_PASSWORD ?? '';
|
|
41
|
-
exports.MAIL_ENCRYPTION = (process.env.MAIL_ENCRYPTION ?? 'false');
|
|
42
|
-
exports.MAIL_FROM_NAME = process.env.MAIL_FROM_NAME ?? 'Support Team';
|
|
43
|
-
exports.MAIL_FROM_EMAIL = process.env.MAIL_FROM_EMAIL ?? 'no-reply@app.com';
|
|
44
|
-
exports.MAIL_TO_CC = process.env.MAIL_TO_CC ?? '';
|
|
45
|
-
exports.MAIL_EMAIL_SUPPORT = process.env.MAIL_EMAIL_SUPPORT ?? 'support@app.com';
|
|
46
|
-
exports.SLACK_ERROR_WEBHOOK_URL = process.env.SLACK_ERROR_WEBHOOK_URL ?? '';
|
|
47
|
-
exports.LANDING_PAGE_URL = process.env.LANDING_PAGE_URL ?? 'http://localhost:8000';
|
|
48
|
-
exports.APP_LOGO_URL = process.env.APP_LOGO_URL ?? '';
|
|
49
|
-
exports.ONESIGNAL_APP_ID = process.env.ONESIGNAL_APP_ID ?? '';
|
|
50
|
-
exports.ONESIGNAL_REST_API_KEY = process.env.ONESIGNAL_REST_API_KEY ?? '';
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var target=exports,all={get ALLOWED_ORIGINS(){return ALLOWED_ORIGINS},get APP_KEY(){return APP_KEY},get APP_LOGO_URL(){return APP_LOGO_URL},get APP_NAME(){return APP_NAME},get APP_PORT(){return APP_PORT},get DB_DIALECT(){return DB_DIALECT},get DB_ENTITIES_PATH(){return DB_ENTITIES_PATH},get DB_HOST(){return DB_HOST},get DB_MAX_POOL_SIZE(){return DB_MAX_POOL_SIZE},get DB_NAME(){return DB_NAME},get DB_PASSWORD(){return DB_PASSWORD},get DB_POOL_ACQUIRE(){return DB_POOL_ACQUIRE},get DB_POOL_IDLE(){return DB_POOL_IDLE},get DB_POOL_MIN(){return DB_POOL_MIN},get DB_PORT(){return DB_PORT},get DB_REPLICA_HOST(){return DB_REPLICA_HOST},get DB_REPLICA_PORT(){return DB_REPLICA_PORT},get DB_SSL(){return DB_SSL},get DB_USER(){return DB_USER},get ENCRYPTION_KEY(){return ENCRYPTION_KEY},get JWT_PRIVATE_KEY(){return JWT_PRIVATE_KEY},get JWT_PUBLIC_KEY(){return JWT_PUBLIC_KEY},get LANDING_PAGE_URL(){return LANDING_PAGE_URL},get MAIL_EMAIL_SUPPORT(){return MAIL_EMAIL_SUPPORT},get MAIL_ENCRYPTION(){return MAIL_ENCRYPTION},get MAIL_FROM_EMAIL(){return MAIL_FROM_EMAIL},get MAIL_FROM_NAME(){return MAIL_FROM_NAME},get MAIL_HOST(){return MAIL_HOST},get MAIL_MAILER(){return MAIL_MAILER},get MAIL_PASSWORD(){return MAIL_PASSWORD},get MAIL_PORT(){return MAIL_PORT},get MAIL_TO_CC(){return MAIL_TO_CC},get MAIL_USERNAME(){return MAIL_USERNAME},get NODE_ENV(){return NODE_ENV},get ONESIGNAL_APP_ID(){return ONESIGNAL_APP_ID},get ONESIGNAL_REST_API_KEY(){return ONESIGNAL_REST_API_KEY},get PASSWORD_HASH_SECRET(){return PASSWORD_HASH_SECRET},get REDIS_DB(){return REDIS_DB},get REDIS_HOST(){return REDIS_HOST},get REDIS_PASSWORD(){return REDIS_PASSWORD},get REDIS_PORT(){return REDIS_PORT},get REDIS_TLS(){return REDIS_TLS},get SESSION_EXPIRATION(){return SESSION_EXPIRATION},get SESSION_KEY(){return SESSION_KEY},get SLACK_ERROR_WEBHOOK_URL(){return SLACK_ERROR_WEBHOOK_URL}};for(var name in all)Object.defineProperty(target,name,{enumerable:!0,get:Object.getOwnPropertyDescriptor(all,name).get});(0,require("dotenv").config)({quiet:!0});let NODE_ENV=process.env.NODE_ENV??"development",APP_NAME=process.env.APP_NAME??"MyApp",APP_PORT=Number(process.env.APP_PORT)??3e3,APP_KEY=process.env.APP_KEY??"",SESSION_KEY=process.env.SESSION_KEY??"APP_SESSION",SESSION_EXPIRATION=Number(process.env.SESSION_EXPIRATION)??86400,ALLOWED_ORIGINS=(process.env.ALLOWED_ORIGINS??"http://localhost:3000").split(","),PASSWORD_HASH_SECRET=process.env.PASSWORD_HASH_SECRET??"default_secret",ENCRYPTION_KEY=process.env.ENCRYPTION_KEY,JWT_PUBLIC_KEY=process.env.JWT_PUBLIC_KEY??"",JWT_PRIVATE_KEY=process.env.JWT_PRIVATE_KEY??"",DB_DIALECT="postgres",DB_HOST=process.env.DB_HOST??"localhost",DB_PORT=Number(process.env.DB_PORT)??5432,DB_USER=process.env.DB_USER??"postgres",DB_PASSWORD=process.env.DB_PASSWORD??"password",DB_NAME=process.env.DB_NAME??"postgres",DB_REPLICA_HOST=process.env.DB_REPLICA_HOST??"localhost",DB_REPLICA_PORT=Number(process.env.DB_REPLICA_PORT)??5432,DB_SSL=(process.env.DB_SSL??"false")?.toLowerCase()==="true",DB_MAX_POOL_SIZE=Number(process.env.DB_MAX_POOL_SIZE??10),DB_POOL_MIN=Number(process.env.DB_POOL_MIN??0),DB_POOL_ACQUIRE=Number(process.env.DB_POOL_ACQUIRE??3e4),DB_POOL_IDLE=Number(process.env.DB_POOL_IDLE??1e4),DB_ENTITIES_PATH="./dist/**/**/*.entity.*",REDIS_HOST=process.env.REDIS_HOST??"localhost",REDIS_PORT=Number(process.env.REDIS_PORT)??6379,REDIS_DB=Number(process.env.REDIS_DB)??0,REDIS_PASSWORD=process.env.REDIS_PASSWORD??"",REDIS_TLS=(process.env.REDIS_TLS??"false")?.toLowerCase()==="true",MAIL_MAILER=process.env.MAIL_MAILER??"smtp",MAIL_HOST=process.env.MAIL_HOST??"127.0.0.1",MAIL_PORT=+(process.env.MAIL_PORT??1025),MAIL_USERNAME=process.env.MAIL_USERNAME??"",MAIL_PASSWORD=process.env.MAIL_PASSWORD??"",MAIL_ENCRYPTION=process.env.MAIL_ENCRYPTION??"false",MAIL_FROM_NAME=process.env.MAIL_FROM_NAME??"Support Team",MAIL_FROM_EMAIL=process.env.MAIL_FROM_EMAIL??"no-reply@app.com",MAIL_TO_CC=process.env.MAIL_TO_CC??"",MAIL_EMAIL_SUPPORT=process.env.MAIL_EMAIL_SUPPORT??"support@app.com",SLACK_ERROR_WEBHOOK_URL=process.env.SLACK_ERROR_WEBHOOK_URL??"",LANDING_PAGE_URL=process.env.LANDING_PAGE_URL??"http://localhost:8000",APP_LOGO_URL=process.env.APP_LOGO_URL??"",ONESIGNAL_APP_ID=process.env.ONESIGNAL_APP_ID??"",ONESIGNAL_REST_API_KEY=process.env.ONESIGNAL_REST_API_KEY??"";
|
|
@@ -1,56 +1 @@
|
|
|
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
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.AppController = void 0;
|
|
13
|
-
const common_1 = require("@nestjs/common");
|
|
14
|
-
const core_1 = require("@nestjs/core");
|
|
15
|
-
const helpers_1 = require("@triproject/helpers");
|
|
16
|
-
const cache_1 = require("../drivers/cache");
|
|
17
|
-
const swagger_helper_1 = require("../helpers/swagger.helper");
|
|
18
|
-
let AppController = class AppController {
|
|
19
|
-
req;
|
|
20
|
-
appCache;
|
|
21
|
-
_cacheKey() {
|
|
22
|
-
const keys = [this.constructor.name, this.req.path, this.req.method];
|
|
23
|
-
if (this.req.query && Object.keys(this.req.query).length) {
|
|
24
|
-
keys.push((0, helpers_1.qs)(this.req.query));
|
|
25
|
-
}
|
|
26
|
-
if (this.req.body && Object.keys(this.req.body).length) {
|
|
27
|
-
keys.push((0, helpers_1.qs)(this.req.body));
|
|
28
|
-
}
|
|
29
|
-
return keys;
|
|
30
|
-
}
|
|
31
|
-
async cache(callback, ttl = 60) {
|
|
32
|
-
return await this.appCache.cache(this._cacheKey(), callback, ttl);
|
|
33
|
-
}
|
|
34
|
-
async cacheWithTimestamp(callback, ttl = 60) {
|
|
35
|
-
return await this.appCache.cacheWithTimeStamp(this._cacheKey(), callback, ttl);
|
|
36
|
-
}
|
|
37
|
-
async clearCache() {
|
|
38
|
-
await this.appCache.delAll([this.constructor.name]);
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
exports.AppController = AppController;
|
|
42
|
-
__decorate([
|
|
43
|
-
(0, common_1.Inject)(core_1.REQUEST),
|
|
44
|
-
__metadata("design:type", Object)
|
|
45
|
-
], AppController.prototype, "req", void 0);
|
|
46
|
-
__decorate([
|
|
47
|
-
(0, common_1.Inject)(cache_1.AppCache),
|
|
48
|
-
__metadata("design:type", cache_1.AppCache)
|
|
49
|
-
], AppController.prototype, "appCache", void 0);
|
|
50
|
-
exports.AppController = AppController = __decorate([
|
|
51
|
-
swagger_helper_1.SwaggerApiInternalServerErrorResponse,
|
|
52
|
-
swagger_helper_1.SwaggerApiBadSwaGatewayResponse,
|
|
53
|
-
swagger_helper_1.SwaggerApiConflictResponse,
|
|
54
|
-
swagger_helper_1.SwaggerApiForbiddenResponse,
|
|
55
|
-
swagger_helper_1.SwaggerApiUnauthorizedResponse
|
|
56
|
-
], AppController);
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"AppController",{enumerable:!0,get:function(){return AppController}});let _common=require("@nestjs/common"),_core=require("@nestjs/core"),_helpers=require("@triproject/helpers"),_express=require("express"),_cache=require("../drivers/cache"),_swaggerhelper=require("../helpers/swagger.helper");function _ts_decorate(decorators,target,key,desc){var d,c=arguments.length,r=c<3?target:null===desc?desc=Object.getOwnPropertyDescriptor(target,key):desc;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r}function _ts_metadata(k,v){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(k,v)}let AppController=class AppController{req;appCache;_cacheKey(){let keys=[this.constructor.name,this.req.path,this.req.method];return this.req.query&&Object.keys(this.req.query).length&&keys.push((0,_helpers.qs)(this.req.query)),this.req.body&&Object.keys(this.req.body).length&&keys.push((0,_helpers.qs)(this.req.body)),keys}async cache(callback,ttl=60){return await this.appCache.cache(this._cacheKey(),callback,ttl)}async cacheWithTimestamp(callback,ttl=60){return await this.appCache.cacheWithTimeStamp(this._cacheKey(),callback,ttl)}async clearCache(){await this.appCache.delAll(this.constructor.name)}};_ts_decorate([(0,_common.Inject)(_core.REQUEST),_ts_metadata("design:type",void 0===_express.Request?Object:_express.Request)],AppController.prototype,"req",void 0),_ts_decorate([(0,_common.Inject)(_cache.AppCache),_ts_metadata("design:type",void 0===_cache.AppCache?Object:_cache.AppCache)],AppController.prototype,"appCache",void 0),AppController=_ts_decorate([_swaggerhelper.SwaggerApiInternalServerErrorResponse,_swaggerhelper.SwaggerApiBadSwaGatewayResponse,_swaggerhelper.SwaggerApiConflictResponse,_swaggerhelper.SwaggerApiForbiddenResponse,_swaggerhelper.SwaggerApiUnauthorizedResponse],AppController);
|
|
@@ -12,7 +12,7 @@ export declare class AppCache {
|
|
|
12
12
|
set<T>(key: CacheKey, value: T, ttl?: number): Promise<void>;
|
|
13
13
|
get<T>(key: CacheKey): Promise<T | undefined>;
|
|
14
14
|
del(key: CacheKey): Promise<void>;
|
|
15
|
-
delAll(key:
|
|
15
|
+
delAll(key: string): Promise<void>;
|
|
16
16
|
cache<T>(key: CacheKey, fn: () => Promise<any>, ttl?: number): Promise<T>;
|
|
17
17
|
cacheWithTimeStamp<T extends object | string | number>(key: CacheKey, value: () => Promise<T> | T, ttl?: number): Promise<CacheWithTimestamp<T>>;
|
|
18
18
|
}
|
|
@@ -1,22 +1 @@
|
|
|
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.CacheModule = void 0;
|
|
10
|
-
const common_1 = require("@nestjs/common");
|
|
11
|
-
const cache_1 = require("./cache");
|
|
12
|
-
const redis_1 = require("./redis");
|
|
13
|
-
let CacheModule = class CacheModule {
|
|
14
|
-
};
|
|
15
|
-
exports.CacheModule = CacheModule;
|
|
16
|
-
exports.CacheModule = CacheModule = __decorate([
|
|
17
|
-
(0, common_1.Global)(),
|
|
18
|
-
(0, common_1.Module)({
|
|
19
|
-
providers: [redis_1.Redis, cache_1.AppCache],
|
|
20
|
-
exports: [cache_1.AppCache],
|
|
21
|
-
})
|
|
22
|
-
], CacheModule);
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"CacheModule",{enumerable:!0,get:function(){return CacheModule}});let _common=require("@nestjs/common"),_cache=require("./cache"),_redis=require("./redis");let CacheModule=class CacheModule{};CacheModule=function(decorators,target,key,desc){var d,c=arguments.length,r=c<3?target:null===desc?desc=Object.getOwnPropertyDescriptor(target,key):desc;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r}([(0,_common.Global)(),(0,_common.Module)({providers:[_redis.Redis,_cache.AppCache],exports:[_cache.AppCache]})],CacheModule);
|
|
@@ -1,92 +1 @@
|
|
|
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
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.AppCache = void 0;
|
|
13
|
-
const common_1 = require("@nestjs/common");
|
|
14
|
-
const helpers_1 = require("@triproject/helpers");
|
|
15
|
-
const config_1 = require("../../config");
|
|
16
|
-
const redis_1 = require("./redis");
|
|
17
|
-
let AppCache = class AppCache {
|
|
18
|
-
connection;
|
|
19
|
-
PREFIX = config_1.APP_KEY;
|
|
20
|
-
constructor(redis) {
|
|
21
|
-
this.connection = redis.getConnection();
|
|
22
|
-
}
|
|
23
|
-
_parseKey(key) {
|
|
24
|
-
if (!key)
|
|
25
|
-
throw new common_1.UnprocessableEntityException('Cache key cannot be null or undefined');
|
|
26
|
-
const keys = [this.PREFIX];
|
|
27
|
-
if (Array.isArray(key))
|
|
28
|
-
keys.push(...key);
|
|
29
|
-
else
|
|
30
|
-
keys.push(key?.toString());
|
|
31
|
-
return keys
|
|
32
|
-
.flat()
|
|
33
|
-
.flat()
|
|
34
|
-
.filter((d) => d)
|
|
35
|
-
.map((d) => d?.toString()?.toUpperCase())
|
|
36
|
-
.join(':');
|
|
37
|
-
}
|
|
38
|
-
async set(key, value, ttl = 60) {
|
|
39
|
-
await this.connection.set(this._parseKey(key), JSON.stringify({ data: value }), {
|
|
40
|
-
expiration: { type: 'EX', value: ttl * 1000 },
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
async get(key) {
|
|
44
|
-
try {
|
|
45
|
-
const data = await this.connection.get(this._parseKey(key));
|
|
46
|
-
if (!data)
|
|
47
|
-
return undefined;
|
|
48
|
-
const parsedData = JSON.parse(data?.toString());
|
|
49
|
-
return parsedData?.data;
|
|
50
|
-
}
|
|
51
|
-
catch (error) {
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
async del(key) {
|
|
56
|
-
await this.connection.del(this._parseKey(key));
|
|
57
|
-
}
|
|
58
|
-
async delAll(key) {
|
|
59
|
-
const keys = await this.connection.hGetAll(`*${this.PREFIX}*${this._parseKey(key)}*`);
|
|
60
|
-
for (const k in keys)
|
|
61
|
-
await this.connection.del(k);
|
|
62
|
-
}
|
|
63
|
-
async cache(key, fn, ttl = 60) {
|
|
64
|
-
const data = await this.get(key);
|
|
65
|
-
if (data)
|
|
66
|
-
return data;
|
|
67
|
-
const result = await fn();
|
|
68
|
-
await this.set(key, result, ttl);
|
|
69
|
-
return result;
|
|
70
|
-
}
|
|
71
|
-
async cacheWithTimeStamp(key, value, ttl) {
|
|
72
|
-
try {
|
|
73
|
-
let data = await this.get(key);
|
|
74
|
-
if (data)
|
|
75
|
-
return data;
|
|
76
|
-
data = {
|
|
77
|
-
data: (typeof data === 'function' ? await value() : value),
|
|
78
|
-
timestamp: (0, helpers_1.dateUtil)().utc().toString(),
|
|
79
|
-
};
|
|
80
|
-
this.set(key, data, ttl);
|
|
81
|
-
return data;
|
|
82
|
-
}
|
|
83
|
-
catch (error) {
|
|
84
|
-
throw error;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
exports.AppCache = AppCache;
|
|
89
|
-
exports.AppCache = AppCache = __decorate([
|
|
90
|
-
(0, common_1.Injectable)(),
|
|
91
|
-
__metadata("design:paramtypes", [redis_1.Redis])
|
|
92
|
-
], AppCache);
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"AppCache",{enumerable:!0,get:function(){return AppCache}});let _common=require("@nestjs/common"),_helpers=require("@triproject/helpers"),_config=require("../../config"),_redis=require("./redis");function _ts_metadata(k,v){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(k,v)}let AppCache=class AppCache{connection;PREFIX=_config.APP_KEY;constructor(redis){this.connection=redis.getConnection()}_parseKey(key){if(!key)throw new _common.UnprocessableEntityException("Cache key cannot be null or undefined");let keys=[this.PREFIX];return Array.isArray(key)?keys.push(...key):keys.push(key?.toString()),keys.flat().flat().filter(d=>d).map(d=>d?.toString()?.toUpperCase()).join("::").replaceAll(/[^a-zA-Z0-9\-:]/g,"-")}async set(key,value,ttl=60){await this.connection.set(this._parseKey(key),JSON.stringify({data:value}),{expiration:{type:"EX",value:1e3*ttl}})}async get(key){try{let data=await this.connection.get(this._parseKey(key));if(!data)return;let parsedData=JSON.parse(data?.toString());return parsedData?.data}catch(error){return}}async del(key){await this.connection.del(this._parseKey(key))}async delAll(key){for(let k of(await this.connection.keys(`${this._parseKey(key)}*`)))await this.connection.del(k)}async cache(key,fn,ttl=60){let data=await this.get(key);if(data)return data;let result=await fn();return await this.set(key,result,ttl),result}async cacheWithTimeStamp(key,value,ttl){try{let data=await this.get(key);if(data)return data;return data={data:"function"==typeof data?await value():value,timestamp:(0,_helpers.dateUtil)().utc().toString()},this.set(key,data,ttl),data}catch(error){throw error}}};AppCache=function(decorators,target,key,desc){var d,c=arguments.length,r=c<3?target:null===desc?desc=Object.getOwnPropertyDescriptor(target,key):desc;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r}([(0,_common.Injectable)(),_ts_metadata("design:type",Function),_ts_metadata("design:paramtypes",[void 0===_redis.Redis?Object:_redis.Redis])],AppCache);
|
|
@@ -1,19 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./cache"), exports);
|
|
18
|
-
__exportStar(require("./cache.driver"), exports);
|
|
19
|
-
__exportStar(require("./redis"), exports);
|
|
1
|
+
"use strict";function _export_star(from,to){return Object.keys(from).forEach(function(k){"default"===k||Object.prototype.hasOwnProperty.call(to,k)||Object.defineProperty(to,k,{enumerable:!0,get:function(){return from[k]}})}),from}Object.defineProperty(exports,"__esModule",{value:!0}),_export_star(require("./cache"),exports),_export_star(require("./cache.driver"),exports),_export_star(require("./redis"),exports);
|
|
@@ -1,52 +1 @@
|
|
|
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
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
var Redis_1;
|
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.Redis = void 0;
|
|
14
|
-
const common_1 = require("@nestjs/common");
|
|
15
|
-
const redis_1 = require("redis");
|
|
16
|
-
const config_1 = require("../../config");
|
|
17
|
-
const app_logger_1 = require("../logger/app.logger");
|
|
18
|
-
let Redis = Redis_1 = class Redis {
|
|
19
|
-
logger = new app_logger_1.AppLogger(Redis_1.name);
|
|
20
|
-
connection;
|
|
21
|
-
constructor() {
|
|
22
|
-
this.connection = (0, redis_1.createClient)({
|
|
23
|
-
database: config_1.REDIS_DB,
|
|
24
|
-
password: config_1.REDIS_PASSWORD,
|
|
25
|
-
socket: {
|
|
26
|
-
host: config_1.REDIS_HOST,
|
|
27
|
-
port: config_1.REDIS_PORT,
|
|
28
|
-
tls: config_1.REDIS_TLS,
|
|
29
|
-
},
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
async _connect() {
|
|
33
|
-
await this.connection
|
|
34
|
-
.connect()
|
|
35
|
-
.then(() => this.logger.log('Established connection to Redis'))
|
|
36
|
-
.catch((err) => this.logger.error('Unable to connect to Redis', err));
|
|
37
|
-
this.connection.on('connect', () => this.logger.log('Established connection to Redis'));
|
|
38
|
-
this.connection.on('error', (err) => this.logger.error('Failed to connect to Redis', err));
|
|
39
|
-
this.connection.on('reconnecting', () => this.logger.log('Reconnecting to Redis'));
|
|
40
|
-
}
|
|
41
|
-
getConnection() {
|
|
42
|
-
return this.connection;
|
|
43
|
-
}
|
|
44
|
-
async onModuleInit() {
|
|
45
|
-
await this._connect();
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
exports.Redis = Redis;
|
|
49
|
-
exports.Redis = Redis = Redis_1 = __decorate([
|
|
50
|
-
(0, common_1.Injectable)(),
|
|
51
|
-
__metadata("design:paramtypes", [])
|
|
52
|
-
], Redis);
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"Redis",{enumerable:!0,get:function(){return Redis}});let _common=require("@nestjs/common"),_redis=require("redis"),_config=require("../../config"),_applogger=require("../logger/app.logger");function _ts_metadata(k,v){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(k,v)}let Redis=class Redis{logger=new _applogger.AppLogger(Redis.name);connection;constructor(){this.connection=(0,_redis.createClient)({database:_config.REDIS_DB,password:_config.REDIS_PASSWORD,socket:{host:_config.REDIS_HOST,port:_config.REDIS_PORT,tls:_config.REDIS_TLS}})}async _connect(){await this.connection.connect().then(()=>this.logger.log("Redis connected successfully")).catch(err=>this.logger.error("Unable to connect to Redis",err)),this.connection.on("connect",()=>this.logger.log("Redis connected successfully")),this.connection.on("error",err=>this.logger.error("Redis connection error",err)),this.connection.on("reconnecting",()=>this.logger.log("Reconnecting to Redis"))}getConnection(){return this.connection}async onModuleInit(){await this._connect()}};Redis=function(decorators,target,key,desc){var d,c=arguments.length,r=c<3?target:null===desc?desc=Object.getOwnPropertyDescriptor(target,key):desc;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r}([(0,_common.Injectable)(),_ts_metadata("design:type",Function),_ts_metadata("design:paramtypes",[])],Redis);
|
|
@@ -1,217 +1 @@
|
|
|
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
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.RelationEntity = exports.Entity = exports.PaginateRequest = exports.PaginateResponse = void 0;
|
|
13
|
-
exports.PrimaryUuidCol = PrimaryUuidCol;
|
|
14
|
-
exports.PrimaryCodeCol = PrimaryCodeCol;
|
|
15
|
-
exports.PrimaryNumberCol = PrimaryNumberCol;
|
|
16
|
-
exports.CreatedAtCol = CreatedAtCol;
|
|
17
|
-
exports.UpdatedAtCol = UpdatedAtCol;
|
|
18
|
-
exports.ForeignUuidCol = ForeignUuidCol;
|
|
19
|
-
exports.NumberCol = NumberCol;
|
|
20
|
-
exports.BooleanCol = BooleanCol;
|
|
21
|
-
exports.NameCol = NameCol;
|
|
22
|
-
exports.EnumCol = EnumCol;
|
|
23
|
-
exports.SchedulerCol = SchedulerCol;
|
|
24
|
-
const swagger_1 = require("@nestjs/swagger");
|
|
25
|
-
const helpers_1 = require("@triproject/helpers");
|
|
26
|
-
const class_validator_1 = require("class-validator");
|
|
27
|
-
const sequelize_typescript_1 = require("sequelize-typescript");
|
|
28
|
-
class PaginateResponse {
|
|
29
|
-
data;
|
|
30
|
-
timestamp;
|
|
31
|
-
meta;
|
|
32
|
-
}
|
|
33
|
-
exports.PaginateResponse = PaginateResponse;
|
|
34
|
-
__decorate([
|
|
35
|
-
(0, swagger_1.ApiProperty)({ example: '2025-06-01T12:00:00Z', description: 'Timestamp of the response' }),
|
|
36
|
-
__metadata("design:type", String)
|
|
37
|
-
], PaginateResponse.prototype, "timestamp", void 0);
|
|
38
|
-
__decorate([
|
|
39
|
-
(0, swagger_1.ApiProperty)({
|
|
40
|
-
example: {
|
|
41
|
-
total: 100,
|
|
42
|
-
totalPage: 10,
|
|
43
|
-
perPage: 10,
|
|
44
|
-
prevPage: null,
|
|
45
|
-
page: 1,
|
|
46
|
-
nextPage: 2,
|
|
47
|
-
},
|
|
48
|
-
}),
|
|
49
|
-
__metadata("design:type", Object)
|
|
50
|
-
], PaginateResponse.prototype, "meta", void 0);
|
|
51
|
-
class PaginateRequest {
|
|
52
|
-
perPage;
|
|
53
|
-
page;
|
|
54
|
-
q;
|
|
55
|
-
orderBy;
|
|
56
|
-
sort;
|
|
57
|
-
searchKey;
|
|
58
|
-
order;
|
|
59
|
-
include;
|
|
60
|
-
where;
|
|
61
|
-
orWhere;
|
|
62
|
-
andWhere;
|
|
63
|
-
attributes;
|
|
64
|
-
groupBy;
|
|
65
|
-
}
|
|
66
|
-
exports.PaginateRequest = PaginateRequest;
|
|
67
|
-
__decorate([
|
|
68
|
-
(0, swagger_1.ApiProperty)({ example: 10, description: 'Number of items per page' }),
|
|
69
|
-
(0, class_validator_1.IsOptional)(),
|
|
70
|
-
(0, class_validator_1.IsNumber)(),
|
|
71
|
-
__metadata("design:type", Number)
|
|
72
|
-
], PaginateRequest.prototype, "perPage", void 0);
|
|
73
|
-
__decorate([
|
|
74
|
-
(0, swagger_1.ApiProperty)({ example: 1, description: 'Current page number' }),
|
|
75
|
-
(0, class_validator_1.IsOptional)(),
|
|
76
|
-
(0, class_validator_1.IsNumber)(),
|
|
77
|
-
__metadata("design:type", Number)
|
|
78
|
-
], PaginateRequest.prototype, "page", void 0);
|
|
79
|
-
__decorate([
|
|
80
|
-
(0, swagger_1.ApiProperty)({ example: 'search query', description: 'Search query' }),
|
|
81
|
-
(0, class_validator_1.IsOptional)(),
|
|
82
|
-
(0, class_validator_1.IsString)(),
|
|
83
|
-
__metadata("design:type", String)
|
|
84
|
-
], PaginateRequest.prototype, "q", void 0);
|
|
85
|
-
__decorate([
|
|
86
|
-
(0, swagger_1.ApiProperty)({ example: 'createdAt', description: 'Order by field' }),
|
|
87
|
-
(0, class_validator_1.IsString)(),
|
|
88
|
-
(0, class_validator_1.IsOptional)(),
|
|
89
|
-
__metadata("design:type", Object)
|
|
90
|
-
], PaginateRequest.prototype, "orderBy", void 0);
|
|
91
|
-
__decorate([
|
|
92
|
-
(0, swagger_1.ApiProperty)({ example: 'ASC', enum: ['ASC', 'DESC'], description: 'Sort order' }),
|
|
93
|
-
(0, class_validator_1.IsEnum)(['ASC', 'DESC']),
|
|
94
|
-
__metadata("design:type", String)
|
|
95
|
-
], PaginateRequest.prototype, "sort", void 0);
|
|
96
|
-
function PrimaryUuidCol() {
|
|
97
|
-
return (0, sequelize_typescript_1.Column)({
|
|
98
|
-
type: sequelize_typescript_1.DataType.UUID,
|
|
99
|
-
allowNull: false,
|
|
100
|
-
primaryKey: true,
|
|
101
|
-
defaultValue: () => (0, helpers_1.generateId)(),
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
function PrimaryCodeCol() {
|
|
105
|
-
return (0, sequelize_typescript_1.Column)({
|
|
106
|
-
allowNull: false,
|
|
107
|
-
primaryKey: true,
|
|
108
|
-
type: sequelize_typescript_1.DataType.STRING(100),
|
|
109
|
-
defaultValue: () => (0, helpers_1.generateCode)(),
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
function PrimaryNumberCol() {
|
|
113
|
-
return (0, sequelize_typescript_1.Column)({
|
|
114
|
-
type: sequelize_typescript_1.DataType.BIGINT,
|
|
115
|
-
allowNull: false,
|
|
116
|
-
primaryKey: true,
|
|
117
|
-
autoIncrement: true,
|
|
118
|
-
get() {
|
|
119
|
-
return +this.getDataValue('id');
|
|
120
|
-
},
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
function CreatedAtCol() {
|
|
124
|
-
return (0, sequelize_typescript_1.Column)({
|
|
125
|
-
type: sequelize_typescript_1.DataType.DATE,
|
|
126
|
-
defaultValue: () => (0, helpers_1.dateUtil)().utc().getTime(),
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
function UpdatedAtCol() {
|
|
130
|
-
return (0, sequelize_typescript_1.Column)({
|
|
131
|
-
type: sequelize_typescript_1.DataType.DATE,
|
|
132
|
-
defaultValue: () => (0, helpers_1.dateUtil)().utc().getTime(),
|
|
133
|
-
onUpdate: 'UPDATE CURRENT_TIMESTAMP',
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
function ForeignUuidCol(params) {
|
|
137
|
-
return (0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.UUID, allowNull: params?.allowNull ?? false });
|
|
138
|
-
}
|
|
139
|
-
function NumberCol(precision = 5, scale = 2, options = {}) {
|
|
140
|
-
let type = sequelize_typescript_1.DataType.DECIMAL(precision, scale);
|
|
141
|
-
if (scale === 0) {
|
|
142
|
-
type = sequelize_typescript_1.DataType.INTEGER;
|
|
143
|
-
if (precision <= 5)
|
|
144
|
-
type = sequelize_typescript_1.DataType.MEDIUMINT;
|
|
145
|
-
}
|
|
146
|
-
return (0, sequelize_typescript_1.Column)({
|
|
147
|
-
...options,
|
|
148
|
-
type,
|
|
149
|
-
defaultValue: 0,
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
function BooleanCol(defaultValue = true) {
|
|
153
|
-
return (0, sequelize_typescript_1.Column)({
|
|
154
|
-
type: sequelize_typescript_1.DataType.BOOLEAN,
|
|
155
|
-
defaultValue,
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
function NameCol() {
|
|
159
|
-
return (0, sequelize_typescript_1.Column)({
|
|
160
|
-
type: sequelize_typescript_1.DataType.STRING(100),
|
|
161
|
-
allowNull: false,
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
function EnumCol(data) {
|
|
165
|
-
return (0, sequelize_typescript_1.Column)({
|
|
166
|
-
type: sequelize_typescript_1.DataType.ENUM(...data.enum),
|
|
167
|
-
allowNull: false,
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
function SchedulerCol() {
|
|
171
|
-
return (_target, _propertyKey) => {
|
|
172
|
-
(0, sequelize_typescript_1.Column)({
|
|
173
|
-
type: sequelize_typescript_1.DataType.STRING(512),
|
|
174
|
-
get() {
|
|
175
|
-
try {
|
|
176
|
-
const rawValue = this.getDataValue(_propertyKey) ?? '[]';
|
|
177
|
-
const parsed = JSON.parse(rawValue);
|
|
178
|
-
return parsed.map(([start, end]) => ({ start: (0, helpers_1.dateUtil)(start), end: (0, helpers_1.dateUtil)(end) }));
|
|
179
|
-
}
|
|
180
|
-
catch (error) {
|
|
181
|
-
return [];
|
|
182
|
-
}
|
|
183
|
-
},
|
|
184
|
-
set(value) {
|
|
185
|
-
this.setDataValue(_propertyKey, JSON.stringify(value.map(({ start, end }) => [(0, helpers_1.dateUtil)(start).toISOString(), (0, helpers_1.dateUtil)(end).toISOString()])));
|
|
186
|
-
},
|
|
187
|
-
});
|
|
188
|
-
};
|
|
189
|
-
}
|
|
190
|
-
let Entity = class Entity extends sequelize_typescript_1.Model {
|
|
191
|
-
};
|
|
192
|
-
exports.Entity = Entity;
|
|
193
|
-
__decorate([
|
|
194
|
-
PrimaryUuidCol(),
|
|
195
|
-
__metadata("design:type", String)
|
|
196
|
-
], Entity.prototype, "id", void 0);
|
|
197
|
-
__decorate([
|
|
198
|
-
CreatedAtCol(),
|
|
199
|
-
__metadata("design:type", Date)
|
|
200
|
-
], Entity.prototype, "createdAt", void 0);
|
|
201
|
-
__decorate([
|
|
202
|
-
UpdatedAtCol(),
|
|
203
|
-
__metadata("design:type", Date)
|
|
204
|
-
], Entity.prototype, "updatedAt", void 0);
|
|
205
|
-
exports.Entity = Entity = __decorate([
|
|
206
|
-
(0, sequelize_typescript_1.Table)({ underscored: false, timestamps: true })
|
|
207
|
-
], Entity);
|
|
208
|
-
let RelationEntity = class RelationEntity extends sequelize_typescript_1.Model {
|
|
209
|
-
};
|
|
210
|
-
exports.RelationEntity = RelationEntity;
|
|
211
|
-
__decorate([
|
|
212
|
-
PrimaryNumberCol(),
|
|
213
|
-
__metadata("design:type", Number)
|
|
214
|
-
], RelationEntity.prototype, "id", void 0);
|
|
215
|
-
exports.RelationEntity = RelationEntity = __decorate([
|
|
216
|
-
(0, sequelize_typescript_1.Table)({ underscored: false, timestamps: false })
|
|
217
|
-
], RelationEntity);
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var target=exports,all={get BooleanCol(){return BooleanCol},get CreatedAtCol(){return CreatedAtCol},get Entity(){return Entity},get EnumCol(){return EnumCol},get ForeignUuidCol(){return ForeignUuidCol},get NameCol(){return NameCol},get NumberCol(){return NumberCol},get PaginateRequest(){return PaginateRequest},get PaginateResponse(){return PaginateResponse},get PrimaryCodeCol(){return PrimaryCodeCol},get PrimaryNumberCol(){return PrimaryNumberCol},get PrimaryUuidCol(){return PrimaryUuidCol},get RelationEntity(){return RelationEntity},get SchedulerCol(){return SchedulerCol},get UpdatedAtCol(){return UpdatedAtCol}};for(var name in all)Object.defineProperty(target,name,{enumerable:!0,get:Object.getOwnPropertyDescriptor(all,name).get});let _swagger=require("@nestjs/swagger"),_helpers=require("@triproject/helpers"),_classvalidator=require("class-validator"),_sequelizetypescript=require("sequelize-typescript");function _ts_decorate(decorators,target,key,desc){var d,c=arguments.length,r=c<3?target:null===desc?desc=Object.getOwnPropertyDescriptor(target,key):desc;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r}function _ts_metadata(k,v){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(k,v)}let PaginateResponse=class PaginateResponse{data;timestamp;meta};_ts_decorate([(0,_swagger.ApiProperty)({example:"2025-06-01T12:00:00Z",description:"Timestamp of the response"}),_ts_metadata("design:type",String)],PaginateResponse.prototype,"timestamp",void 0),_ts_decorate([(0,_swagger.ApiProperty)({example:{total:100,totalPage:10,perPage:10,prevPage:null,page:1,nextPage:2}}),_ts_metadata("design:type",Object)],PaginateResponse.prototype,"meta",void 0);let PaginateRequest=class PaginateRequest{perPage;page;q;orderBy;sort;searchKey;order;include;where;orWhere;andWhere;attributes;groupBy};function PrimaryUuidCol(){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.UUID,allowNull:!1,primaryKey:!0,defaultValue:()=>(0,_helpers.generateId)()})}function PrimaryCodeCol(){return(0,_sequelizetypescript.Column)({allowNull:!1,primaryKey:!0,type:_sequelizetypescript.DataType.STRING(100),defaultValue:()=>(0,_helpers.generateCode)()})}function PrimaryNumberCol(){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.BIGINT,allowNull:!1,primaryKey:!0,autoIncrement:!0,get(){return+this.getDataValue("id")}})}function CreatedAtCol(){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.DATE,defaultValue:()=>(0,_helpers.dateUtil)().utc().getTime()})}function UpdatedAtCol(){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.DATE,defaultValue:()=>(0,_helpers.dateUtil)().utc().getTime(),onUpdate:"UPDATE CURRENT_TIMESTAMP"})}function ForeignUuidCol(params){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.UUID,allowNull:params?.allowNull??!1})}function NumberCol(precision=5,scale=2,options={}){let type=_sequelizetypescript.DataType.DECIMAL(precision,scale);return 0===scale&&(type=_sequelizetypescript.DataType.INTEGER,precision<=5&&(type=_sequelizetypescript.DataType.MEDIUMINT)),(0,_sequelizetypescript.Column)({...options,type,defaultValue:0})}function BooleanCol(defaultValue=!0){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.BOOLEAN,defaultValue})}function NameCol(){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.STRING(100),allowNull:!1})}function EnumCol(data){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.ENUM(...data.enum),allowNull:!1})}function SchedulerCol(){return(_target,_propertyKey)=>{(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.STRING(512),get(){try{let rawValue=this.getDataValue(_propertyKey)??"[]";return JSON.parse(rawValue).map(([start,end])=>({start:(0,_helpers.dateUtil)(start),end:(0,_helpers.dateUtil)(end)}))}catch(error){return[]}},set(value){this.setDataValue(_propertyKey,JSON.stringify(value.map(({start,end})=>[(0,_helpers.dateUtil)(start).toISOString(),(0,_helpers.dateUtil)(end).toISOString()])))}})}}_ts_decorate([(0,_swagger.ApiProperty)({example:10,description:"Number of items per page"}),(0,_classvalidator.IsOptional)(),(0,_classvalidator.IsNumber)(),_ts_metadata("design:type",Number)],PaginateRequest.prototype,"perPage",void 0),_ts_decorate([(0,_swagger.ApiProperty)({example:1,description:"Current page number"}),(0,_classvalidator.IsOptional)(),(0,_classvalidator.IsNumber)(),_ts_metadata("design:type",Number)],PaginateRequest.prototype,"page",void 0),_ts_decorate([(0,_swagger.ApiProperty)({example:"search query",description:"Search query"}),(0,_classvalidator.IsOptional)(),(0,_classvalidator.IsString)(),_ts_metadata("design:type",String)],PaginateRequest.prototype,"q",void 0),_ts_decorate([(0,_swagger.ApiProperty)({example:"createdAt",description:"Order by field"}),(0,_classvalidator.IsString)(),(0,_classvalidator.IsOptional)(),_ts_metadata("design:type","u"<typeof KeyOfModel?Object:KeyOfModel)],PaginateRequest.prototype,"orderBy",void 0),_ts_decorate([(0,_swagger.ApiProperty)({example:"ASC",enum:["ASC","DESC"],description:"Sort order"}),(0,_classvalidator.IsEnum)(["ASC","DESC"]),_ts_metadata("design:type","u"<typeof OrderDataType?Object:OrderDataType)],PaginateRequest.prototype,"sort",void 0);let Entity=class Entity extends _sequelizetypescript.Model{};_ts_decorate([PrimaryUuidCol(),_ts_metadata("design:type",String)],Entity.prototype,"id",void 0),_ts_decorate([CreatedAtCol(),_ts_metadata("design:type","u"<typeof Date?Object:Date)],Entity.prototype,"createdAt",void 0),_ts_decorate([UpdatedAtCol(),_ts_metadata("design:type","u"<typeof Date?Object:Date)],Entity.prototype,"updatedAt",void 0),Entity=_ts_decorate([(0,_sequelizetypescript.Table)({underscored:!1,timestamps:!0})],Entity);let RelationEntity=class RelationEntity extends _sequelizetypescript.Model{};_ts_decorate([PrimaryNumberCol(),_ts_metadata("design:type",Number)],RelationEntity.prototype,"id",void 0),RelationEntity=_ts_decorate([(0,_sequelizetypescript.Table)({underscored:!1,timestamps:!1})],RelationEntity);
|