@alacard-project/shared 1.0.3 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/constants/grpc.constants.d.ts +1 -0
- package/dist/constants/grpc.constants.js +1 -0
- package/dist/constants/grpc.constants.js.map +1 -1
- package/dist/constants/microservices.constants.d.ts +40 -4
- package/dist/constants/microservices.constants.js +40 -4
- package/dist/constants/microservices.constants.js.map +1 -1
- package/dist/dto/card.dto.d.ts +18 -0
- package/dist/dto/card.dto.js +93 -0
- package/dist/dto/card.dto.js.map +1 -0
- package/dist/dto/client.dto.d.ts +39 -0
- package/dist/dto/client.dto.js +178 -0
- package/dist/dto/client.dto.js.map +1 -0
- package/dist/dto/index.d.ts +3 -0
- package/dist/dto/index.js +3 -0
- package/dist/dto/index.js.map +1 -1
- package/dist/dto/transaction.dto.d.ts +16 -0
- package/dist/dto/transaction.dto.js +78 -0
- package/dist/dto/transaction.dto.js.map +1 -0
- package/dist/enums/user.enum.d.ts +17 -0
- package/dist/enums/user.enum.js +20 -1
- package/dist/enums/user.enum.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/interceptors/http-logging.interceptor.d.ts +10 -0
- package/dist/interceptors/http-logging.interceptor.js +74 -0
- package/dist/interceptors/http-logging.interceptor.js.map +1 -0
- package/dist/utils/proto-path.js +5 -1
- package/dist/utils/proto-path.js.map +1 -1
- package/package.json +13 -2
- package/proto/card.proto +43 -0
- package/proto/client.proto +45 -0
- package/proto/partner.proto +18 -0
- package/proto/terminal.proto +18 -0
- package/proto/token.proto +50 -0
- package/proto/transaction.proto +45 -0
- package/src/constants/grpc.constants.ts +1 -0
- package/src/constants/microservices.constants.ts +40 -4
- package/src/dto/card.dto.ts +64 -0
- package/src/dto/client.dto.ts +131 -0
- package/src/dto/index.ts +3 -0
- package/src/dto/transaction.dto.ts +51 -0
- package/src/enums/user.enum.ts +19 -0
- package/src/index.ts +1 -0
- package/src/interceptors/http-logging.interceptor.ts +71 -0
- package/src/utils/proto-path.ts +13 -7
- package/dist/logging/dto/log-filter.dto.d.ts +0 -29
- package/dist/logging/dto/log-filter.dto.js +0 -146
- package/dist/logging/dto/log-filter.dto.js.map +0 -1
- package/dist/logging/index.d.ts +0 -1
- package/dist/logging/index.js +0 -18
- package/dist/logging/index.js.map +0 -1
package/dist/enums/user.enum.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UserRole = void 0;
|
|
3
|
+
exports.UserScope = exports.UserStatus = exports.UserRole = void 0;
|
|
4
4
|
var UserRole;
|
|
5
5
|
(function (UserRole) {
|
|
6
6
|
UserRole["SUPER_ADMIN"] = "SUPER_ADMIN";
|
|
@@ -10,4 +10,23 @@ var UserRole;
|
|
|
10
10
|
UserRole["PARTNER"] = "PARTNER";
|
|
11
11
|
UserRole["CLIENT"] = "CLIENT";
|
|
12
12
|
})(UserRole || (exports.UserRole = UserRole = {}));
|
|
13
|
+
var UserStatus;
|
|
14
|
+
(function (UserStatus) {
|
|
15
|
+
UserStatus["ACTIVE"] = "ACTIVE";
|
|
16
|
+
UserStatus["INACTIVE"] = "INACTIVE";
|
|
17
|
+
UserStatus["PENDING"] = "PENDING";
|
|
18
|
+
UserStatus["SUSPENDED"] = "SUSPENDED";
|
|
19
|
+
UserStatus["BLOCKED"] = "BLOCKED";
|
|
20
|
+
})(UserStatus || (exports.UserStatus = UserStatus = {}));
|
|
21
|
+
var UserScope;
|
|
22
|
+
(function (UserScope) {
|
|
23
|
+
UserScope["READ"] = "READ";
|
|
24
|
+
UserScope["WRITE"] = "WRITE";
|
|
25
|
+
UserScope["DELETE"] = "DELETE";
|
|
26
|
+
UserScope["ADMIN"] = "ADMIN";
|
|
27
|
+
UserScope["PROFILE_READ"] = "PROFILE_READ";
|
|
28
|
+
UserScope["CARDS_READ"] = "CARDS_READ";
|
|
29
|
+
UserScope["TRANSACTIONS_READ"] = "TRANSACTIONS_READ";
|
|
30
|
+
UserScope["LOGS_READ"] = "LOGS_READ";
|
|
31
|
+
})(UserScope || (exports.UserScope = UserScope = {}));
|
|
13
32
|
//# sourceMappingURL=user.enum.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.enum.js","sourceRoot":"","sources":["../../src/enums/user.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,QAOX;AAPD,WAAY,QAAQ;IAChB,uCAA2B,CAAA;IAC3B,2BAAe,CAAA;IACf,+BAAmB,CAAA;IACnB,qCAAyB,CAAA;IACzB,+BAAmB,CAAA;IACnB,6BAAiB,CAAA;AACrB,CAAC,EAPW,QAAQ,wBAAR,QAAQ,QAOnB"}
|
|
1
|
+
{"version":3,"file":"user.enum.js","sourceRoot":"","sources":["../../src/enums/user.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,QAOX;AAPD,WAAY,QAAQ;IAChB,uCAA2B,CAAA;IAC3B,2BAAe,CAAA;IACf,+BAAmB,CAAA;IACnB,qCAAyB,CAAA;IACzB,+BAAmB,CAAA;IACnB,6BAAiB,CAAA;AACrB,CAAC,EAPW,QAAQ,wBAAR,QAAQ,QAOnB;AAED,IAAY,UAMX;AAND,WAAY,UAAU;IAClB,+BAAiB,CAAA;IACjB,mCAAqB,CAAA;IACrB,iCAAmB,CAAA;IACnB,qCAAuB,CAAA;IACvB,iCAAmB,CAAA;AACvB,CAAC,EANW,UAAU,0BAAV,UAAU,QAMrB;AAED,IAAY,SASX;AATD,WAAY,SAAS;IACjB,0BAAa,CAAA;IACb,4BAAe,CAAA;IACf,8BAAiB,CAAA;IACjB,4BAAe,CAAA;IACf,0CAA6B,CAAA;IAC7B,sCAAyB,CAAA;IACzB,oDAAuC,CAAA;IACvC,oCAAuB,CAAA;AAC3B,CAAC,EATW,SAAS,yBAAT,SAAS,QASpB"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -29,4 +29,5 @@ __exportStar(require("./utils/user.utils"), exports);
|
|
|
29
29
|
__exportStar(require("./utils/prometheus.utils"), exports);
|
|
30
30
|
__exportStar(require("./utils/app.utils"), exports);
|
|
31
31
|
__exportStar(require("./utils/health.utils"), exports);
|
|
32
|
+
__exportStar(require("./interceptors/http-logging.interceptor"), exports);
|
|
32
33
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,8CAA4B;AAC5B,0CAAwB;AACxB,8CAA4B;AAC5B,wCAAsB;AACtB,qDAAmC;AACnC,qDAAmC;AACnC,gEAA8C;AAC9C,qDAAmC;AACnC,yDAAuC;AACvC,+DAA6C;AAC7C,qDAAmC;AACnC,2DAAyC;AACzC,oDAAkC;AAClC,uDAAqC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,8CAA4B;AAC5B,0CAAwB;AACxB,8CAA4B;AAC5B,wCAAsB;AACtB,qDAAmC;AACnC,qDAAmC;AACnC,gEAA8C;AAC9C,qDAAmC;AACnC,yDAAuC;AACvC,+DAA6C;AAC7C,qDAAmC;AACnC,2DAAyC;AACzC,oDAAkC;AAClC,uDAAqC;AACrC,0EAAwD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
export declare class HttpLoggingInterceptor implements NestInterceptor {
|
|
4
|
+
private readonly serviceName;
|
|
5
|
+
private readonly logger;
|
|
6
|
+
private readonly loggingUrl;
|
|
7
|
+
constructor(serviceName: string);
|
|
8
|
+
intercept(context: ExecutionContext, next: CallHandler): Observable<any>;
|
|
9
|
+
private sendLog;
|
|
10
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
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.HttpLoggingInterceptor = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const rxjs_1 = require("rxjs");
|
|
15
|
+
const operators_1 = require("rxjs/operators");
|
|
16
|
+
const axios_1 = require("axios");
|
|
17
|
+
let HttpLoggingInterceptor = class HttpLoggingInterceptor {
|
|
18
|
+
constructor(serviceName) {
|
|
19
|
+
this.serviceName = serviceName;
|
|
20
|
+
this.logger = new common_1.Logger('HttpLoggingInterceptor');
|
|
21
|
+
this.loggingUrl = process.env.LOGGING_API_URL || 'http://logging-microservice:3009/logging-api/logs';
|
|
22
|
+
}
|
|
23
|
+
intercept(context, next) {
|
|
24
|
+
const request = context.switchToHttp().getRequest();
|
|
25
|
+
if (!request)
|
|
26
|
+
return next.handle();
|
|
27
|
+
const { method, url, body, headers } = request;
|
|
28
|
+
const startTime = Date.now();
|
|
29
|
+
return next.handle().pipe((0, operators_1.tap)((response) => {
|
|
30
|
+
const duration = Date.now() - startTime;
|
|
31
|
+
this.sendLog('INFO', `HTTP ${method} ${url} completed`, {
|
|
32
|
+
method,
|
|
33
|
+
url,
|
|
34
|
+
duration: `${duration}ms`,
|
|
35
|
+
statusCode: context.switchToHttp().getResponse().statusCode,
|
|
36
|
+
});
|
|
37
|
+
}), (0, operators_1.catchError)((error) => {
|
|
38
|
+
const duration = Date.now() - startTime;
|
|
39
|
+
this.sendLog('ERROR', `HTTP ${method} ${url} failed: ${error.message}`, {
|
|
40
|
+
method,
|
|
41
|
+
url,
|
|
42
|
+
duration: `${duration}ms`,
|
|
43
|
+
error: error.response?.data || error.message,
|
|
44
|
+
statusCode: error.status || 500,
|
|
45
|
+
});
|
|
46
|
+
return (0, rxjs_1.throwError)(() => error);
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
async sendLog(level, message, metadata) {
|
|
50
|
+
try {
|
|
51
|
+
if (this.serviceName === 'logging-microservice')
|
|
52
|
+
return;
|
|
53
|
+
await axios_1.default.post(this.loggingUrl, {
|
|
54
|
+
logs: [{
|
|
55
|
+
service: this.serviceName,
|
|
56
|
+
level,
|
|
57
|
+
message,
|
|
58
|
+
timestamp: new Date().toISOString(),
|
|
59
|
+
metadata,
|
|
60
|
+
userId: 'system',
|
|
61
|
+
}]
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
catch (e) {
|
|
65
|
+
this.logger.error(`Failed to ship log: ${e.message}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
exports.HttpLoggingInterceptor = HttpLoggingInterceptor;
|
|
70
|
+
exports.HttpLoggingInterceptor = HttpLoggingInterceptor = __decorate([
|
|
71
|
+
(0, common_1.Injectable)(),
|
|
72
|
+
__metadata("design:paramtypes", [String])
|
|
73
|
+
], HttpLoggingInterceptor);
|
|
74
|
+
//# sourceMappingURL=http-logging.interceptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-logging.interceptor.js","sourceRoot":"","sources":["../../src/interceptors/http-logging.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAMwB;AACxB,+BAA8C;AAC9C,8CAAiD;AACjD,iCAA0B;AAGnB,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAI/B,YAA6B,WAAmB;QAAnB,gBAAW,GAAX,WAAW,CAAQ;QAH/B,WAAM,GAAG,IAAI,eAAM,CAAC,wBAAwB,CAAC,CAAC;QAC9C,eAAU,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,mDAAmD,CAAC;IAE7D,CAAC;IAErD,SAAS,CAAC,OAAyB,EAAE,IAAiB;QAClD,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACpD,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QAEnC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CACrB,IAAA,eAAG,EAAC,CAAC,QAAQ,EAAE,EAAE;YACb,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACxC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,MAAM,IAAI,GAAG,YAAY,EAAE;gBACpD,MAAM;gBACN,GAAG;gBACH,QAAQ,EAAE,GAAG,QAAQ,IAAI;gBACzB,UAAU,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU;aAC9D,CAAC,CAAC;QACP,CAAC,CAAC,EACF,IAAA,sBAAU,EAAC,CAAC,KAAK,EAAE,EAAE;YACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACxC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,MAAM,IAAI,GAAG,YAAY,KAAK,CAAC,OAAO,EAAE,EAAE;gBACpE,MAAM;gBACN,GAAG;gBACH,QAAQ,EAAE,GAAG,QAAQ,IAAI;gBACzB,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,IAAI,KAAK,CAAC,OAAO;gBAC5C,UAAU,EAAE,KAAK,CAAC,MAAM,IAAI,GAAG;aAClC,CAAC,CAAC;YACH,OAAO,IAAA,iBAAU,EAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC,CAAC,CACL,CAAC;IACN,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,OAAe,EAAE,QAAa;QAC/D,IAAI,CAAC;YAGD,IAAI,IAAI,CAAC,WAAW,KAAK,sBAAsB;gBAAE,OAAO;YAExD,MAAM,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBAC9B,IAAI,EAAE,CAAC;wBACH,OAAO,EAAE,IAAI,CAAC,WAAW;wBACzB,KAAK;wBACL,OAAO;wBACP,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBACnC,QAAQ;wBACR,MAAM,EAAE,QAAQ;qBACnB,CAAC;aACL,CAAC,CAAC;QACP,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YAET,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1D,CAAC;IACL,CAAC;CACJ,CAAA;AA1DY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,mBAAU,GAAE;;GACA,sBAAsB,CA0DlC"}
|
package/dist/utils/proto-path.js
CHANGED
|
@@ -6,6 +6,10 @@ function getProtoPath(serviceName) {
|
|
|
6
6
|
if (process.env.PROTO_PATH_OVERRIDE) {
|
|
7
7
|
return (0, path_1.join)(process.env.PROTO_PATH_OVERRIDE, `${serviceName}.proto`);
|
|
8
8
|
}
|
|
9
|
-
|
|
9
|
+
const dockerProtoPath = '/app/proto';
|
|
10
|
+
if (process.platform === 'linux' || process.env.NODE_ENV === 'production' || process.env.KUBERNETES_SERVICE_HOST) {
|
|
11
|
+
return (0, path_1.join)(dockerProtoPath, `${serviceName}.proto`);
|
|
12
|
+
}
|
|
13
|
+
return (0, path_1.join)(process.cwd(), 'proto', `${serviceName}.proto`);
|
|
10
14
|
}
|
|
11
15
|
//# sourceMappingURL=proto-path.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proto-path.js","sourceRoot":"","sources":["../../src/utils/proto-path.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"proto-path.js","sourceRoot":"","sources":["../../src/utils/proto-path.ts"],"names":[],"mappings":";;AAEA,oCAkBC;AApBD,+BAA4B;AAE5B,SAAgB,YAAY,CAAC,WAAmB;IAE5C,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;QAClC,OAAO,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,WAAW,QAAQ,CAAC,CAAC;IACzE,CAAC;IAKD,MAAM,eAAe,GAAG,YAAY,CAAC;IAGrC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC;QAC/G,OAAO,IAAA,WAAI,EAAC,eAAe,EAAE,GAAG,WAAW,QAAQ,CAAC,CAAC;IACzD,CAAC;IAGD,OAAO,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,GAAG,WAAW,QAAQ,CAAC,CAAC;AAChE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,24 +1,35 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alacard-project/shared",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"engines": {
|
|
5
5
|
"node": ">=24.0.0"
|
|
6
6
|
},
|
|
7
7
|
"description": "Pure types and constants for Alacard microservices",
|
|
8
8
|
"main": "dist/index.js",
|
|
9
9
|
"types": "dist/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": "./dist/index.js"
|
|
12
|
+
},
|
|
10
13
|
"scripts": {
|
|
11
14
|
"build": "tsc",
|
|
12
15
|
"watch": "tsc -w"
|
|
13
16
|
},
|
|
14
17
|
"dependencies": {
|
|
18
|
+
"@nestjs/common": "^11.1.12",
|
|
15
19
|
"@nestjs/config": "^4.0.2",
|
|
20
|
+
"@nestjs/core": "^11.1.12",
|
|
21
|
+
"axios": "^1.13.2",
|
|
16
22
|
"class-transformer": "^0.5.1",
|
|
17
23
|
"class-validator": "^0.14.3",
|
|
24
|
+
"helmet": "^8.1.0",
|
|
25
|
+
"reflect-metadata": "^0.2.2",
|
|
18
26
|
"rxjs": "^7.8.2"
|
|
19
27
|
},
|
|
20
28
|
"devDependencies": {
|
|
29
|
+
"@nestjs/common": "^11.1.12",
|
|
30
|
+
"@nestjs/config": "^4.0.2",
|
|
31
|
+
"@nestjs/core": "^11.1.12",
|
|
21
32
|
"@types/node": "^24.10.0",
|
|
22
33
|
"typescript": "^5.9.3"
|
|
23
34
|
}
|
|
24
|
-
}
|
|
35
|
+
}
|
package/proto/card.proto
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package card;
|
|
4
|
+
|
|
5
|
+
service CardService {
|
|
6
|
+
rpc Create (CreateCardDto) returns (Card) {}
|
|
7
|
+
rpc FindAll (FindCardsDto) returns (CardsResponse) {}
|
|
8
|
+
rpc FindOne (FindOneCardDto) returns (Card) {}
|
|
9
|
+
rpc Update (UpdateCardDto) returns (Card) {}
|
|
10
|
+
rpc Remove (FindOneCardDto) returns (Card) {}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
message Card {
|
|
14
|
+
string id = 1;
|
|
15
|
+
string cardNumber = 2;
|
|
16
|
+
string status = 3;
|
|
17
|
+
string clientId = 4;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
message CreateCardDto {
|
|
21
|
+
string cardNumber = 1;
|
|
22
|
+
string clientId = 2;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
message UpdateCardDto {
|
|
26
|
+
string id = 1;
|
|
27
|
+
string status = 2;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
message FindOneCardDto {
|
|
31
|
+
string id = 1;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
message FindCardsDto {
|
|
35
|
+
string clientId = 1;
|
|
36
|
+
int32 skip = 2;
|
|
37
|
+
int32 take = 3;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
message CardsResponse {
|
|
41
|
+
repeated Card cards = 1;
|
|
42
|
+
int32 total = 2;
|
|
43
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package client;
|
|
4
|
+
|
|
5
|
+
service ClientService {
|
|
6
|
+
rpc Create (CreateClientDto) returns (Client) {}
|
|
7
|
+
rpc FindAll (FindClientsDto) returns (ClientsResponse) {}
|
|
8
|
+
rpc FindOne (FindOneClientDto) returns (Client) {}
|
|
9
|
+
rpc Update (UpdateClientDto) returns (Client) {}
|
|
10
|
+
rpc Remove (FindOneClientDto) returns (Client) {}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
message Client {
|
|
14
|
+
string id = 1;
|
|
15
|
+
string clientNumber = 2;
|
|
16
|
+
string fullName = 3;
|
|
17
|
+
string createdAt = 4;
|
|
18
|
+
string updatedAt = 5;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
message CreateClientDto {
|
|
22
|
+
string clientNumber = 1;
|
|
23
|
+
string fullName = 2;
|
|
24
|
+
string clientType = 3;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
message UpdateClientDto {
|
|
28
|
+
string id = 1;
|
|
29
|
+
string fullName = 2;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
message FindOneClientDto {
|
|
33
|
+
string id = 1;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
message FindClientsDto {
|
|
37
|
+
string search = 1;
|
|
38
|
+
int32 skip = 2;
|
|
39
|
+
int32 take = 3;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
message ClientsResponse {
|
|
43
|
+
repeated Client clients = 1;
|
|
44
|
+
int32 total = 2;
|
|
45
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package partner;
|
|
4
|
+
|
|
5
|
+
service PartnerService {
|
|
6
|
+
rpc FindOne (FindOneRequest) returns (PartnerResponse);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
message FindOneRequest {
|
|
10
|
+
string id = 1;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
message PartnerResponse {
|
|
14
|
+
string id = 1;
|
|
15
|
+
string name = 2;
|
|
16
|
+
string type = 3;
|
|
17
|
+
bool isActive = 4;
|
|
18
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package terminal;
|
|
4
|
+
|
|
5
|
+
service TerminalService {
|
|
6
|
+
rpc FindOne (FindOneRequest) returns (TerminalResponse);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
message FindOneRequest {
|
|
10
|
+
string id = 1;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
message TerminalResponse {
|
|
14
|
+
string id = 1;
|
|
15
|
+
string serialNumber = 2;
|
|
16
|
+
string model = 3;
|
|
17
|
+
bool isActive = 4;
|
|
18
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package token;
|
|
4
|
+
|
|
5
|
+
service TokenService {
|
|
6
|
+
rpc GenerateTokens (GenerateTokensRequest) returns (TokensResponse);
|
|
7
|
+
rpc ValidateToken (ValidateTokenRequest) returns (ValidateTokenResponse);
|
|
8
|
+
rpc RefreshTokens (RefreshTokensRequest) returns (TokensResponse);
|
|
9
|
+
rpc RevokeToken (RevokeTokenRequest) returns (RevokeTokenResponse);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
message GenerateTokensRequest {
|
|
13
|
+
string userId = 1;
|
|
14
|
+
string email = 2;
|
|
15
|
+
string role = 3;
|
|
16
|
+
repeated string scopes = 4;
|
|
17
|
+
string status = 5;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
message TokensResponse {
|
|
21
|
+
string accessToken = 1;
|
|
22
|
+
string refreshToken = 2;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
message ValidateTokenRequest {
|
|
26
|
+
string token = 1;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
message ValidateTokenResponse {
|
|
30
|
+
bool isValid = 1;
|
|
31
|
+
string userId = 2;
|
|
32
|
+
string role = 3;
|
|
33
|
+
repeated string scopes = 4;
|
|
34
|
+
string status = 5;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
message RefreshTokensRequest {
|
|
38
|
+
string refreshToken = 1;
|
|
39
|
+
string userAgent = 2;
|
|
40
|
+
string ipAddress = 3;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
message RevokeTokenRequest {
|
|
44
|
+
string userId = 1;
|
|
45
|
+
string refreshToken = 2;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
message RevokeTokenResponse {
|
|
49
|
+
bool success = 1;
|
|
50
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package transaction;
|
|
4
|
+
|
|
5
|
+
service TransactionService {
|
|
6
|
+
rpc Create (CreateTransactionDto) returns (Transaction) {}
|
|
7
|
+
rpc FindAll (FindTransactionsDto) returns (TransactionsResponse) {}
|
|
8
|
+
rpc FindOne (FindOneTransactionDto) returns (Transaction) {}
|
|
9
|
+
rpc Update (UpdateTransactionDto) returns (Transaction) {}
|
|
10
|
+
rpc Remove (FindOneTransactionDto) returns (Transaction) {}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
message Transaction {
|
|
14
|
+
string id = 1;
|
|
15
|
+
string cardId = 2;
|
|
16
|
+
double amount = 3;
|
|
17
|
+
string status = 4;
|
|
18
|
+
string createdAt = 5;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
message CreateTransactionDto {
|
|
22
|
+
string cardId = 1;
|
|
23
|
+
double amount = 2;
|
|
24
|
+
string description = 3;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
message UpdateTransactionDto {
|
|
28
|
+
string id = 1;
|
|
29
|
+
string status = 2;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
message FindOneTransactionDto {
|
|
33
|
+
string id = 1;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
message FindTransactionsDto {
|
|
37
|
+
string cardId = 1;
|
|
38
|
+
int32 skip = 2;
|
|
39
|
+
int32 take = 3;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
message TransactionsResponse {
|
|
43
|
+
repeated Transaction transactions = 1;
|
|
44
|
+
int32 total = 2;
|
|
45
|
+
}
|
|
@@ -1,18 +1,54 @@
|
|
|
1
1
|
export const MICROSERVICES = {
|
|
2
2
|
CONFIG: {
|
|
3
|
-
SERVICE_NAME: '
|
|
3
|
+
SERVICE_NAME: 'ConfigService',
|
|
4
4
|
PACKAGE: 'config',
|
|
5
5
|
},
|
|
6
6
|
LOGGING: {
|
|
7
|
-
SERVICE_NAME: '
|
|
7
|
+
SERVICE_NAME: 'LoggingService',
|
|
8
8
|
PACKAGE: 'logging',
|
|
9
9
|
},
|
|
10
10
|
AUTH: {
|
|
11
|
-
SERVICE_NAME: '
|
|
11
|
+
SERVICE_NAME: 'AuthService',
|
|
12
12
|
PACKAGE: 'auth',
|
|
13
13
|
},
|
|
14
14
|
USER: {
|
|
15
|
-
SERVICE_NAME: '
|
|
15
|
+
SERVICE_NAME: 'UserService',
|
|
16
16
|
PACKAGE: 'user',
|
|
17
17
|
},
|
|
18
|
+
CLIENT: {
|
|
19
|
+
SERVICE_NAME: 'ClientService',
|
|
20
|
+
PACKAGE: 'client',
|
|
21
|
+
},
|
|
22
|
+
CARD: {
|
|
23
|
+
SERVICE_NAME: 'CardService',
|
|
24
|
+
PACKAGE: 'card',
|
|
25
|
+
},
|
|
26
|
+
TRANSACTION: {
|
|
27
|
+
SERVICE_NAME: 'TransactionService',
|
|
28
|
+
PACKAGE: 'transaction',
|
|
29
|
+
},
|
|
30
|
+
ACCOUNT: {
|
|
31
|
+
SERVICE_NAME: 'AccountService',
|
|
32
|
+
PACKAGE: 'account',
|
|
33
|
+
},
|
|
34
|
+
INVOICE: {
|
|
35
|
+
SERVICE_NAME: 'InvoiceService',
|
|
36
|
+
PACKAGE: 'invoice',
|
|
37
|
+
},
|
|
38
|
+
NOTIFICATION: {
|
|
39
|
+
SERVICE_NAME: 'NotificationService',
|
|
40
|
+
PACKAGE: 'notification',
|
|
41
|
+
},
|
|
42
|
+
ATTACHMENT: {
|
|
43
|
+
SERVICE_NAME: 'AttachmentService',
|
|
44
|
+
PACKAGE: 'attachment',
|
|
45
|
+
},
|
|
46
|
+
TERMINAL: {
|
|
47
|
+
SERVICE_NAME: 'TerminalService',
|
|
48
|
+
PACKAGE: 'terminal',
|
|
49
|
+
},
|
|
50
|
+
PARTNER: {
|
|
51
|
+
SERVICE_NAME: 'PartnerService',
|
|
52
|
+
PACKAGE: 'partner',
|
|
53
|
+
},
|
|
18
54
|
} as const;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { IsString, IsOptional, IsNumber, IsDate } from 'class-validator';
|
|
2
|
+
import { Type } from 'class-transformer';
|
|
3
|
+
|
|
4
|
+
export class CreateCardDto {
|
|
5
|
+
@IsString()
|
|
6
|
+
cardNumber: string;
|
|
7
|
+
|
|
8
|
+
@IsOptional()
|
|
9
|
+
@IsString()
|
|
10
|
+
clientId?: string;
|
|
11
|
+
|
|
12
|
+
@IsOptional()
|
|
13
|
+
@IsString()
|
|
14
|
+
accountId?: string;
|
|
15
|
+
|
|
16
|
+
@IsOptional()
|
|
17
|
+
@IsString()
|
|
18
|
+
cardType?: string;
|
|
19
|
+
|
|
20
|
+
@IsOptional()
|
|
21
|
+
@IsString()
|
|
22
|
+
cardStatus?: string;
|
|
23
|
+
|
|
24
|
+
@IsOptional()
|
|
25
|
+
@Type(() => Date)
|
|
26
|
+
@IsDate()
|
|
27
|
+
issuedAt?: Date;
|
|
28
|
+
|
|
29
|
+
@IsOptional()
|
|
30
|
+
@Type(() => Date)
|
|
31
|
+
@IsDate()
|
|
32
|
+
expiresAt?: Date;
|
|
33
|
+
|
|
34
|
+
@IsOptional()
|
|
35
|
+
@IsNumber()
|
|
36
|
+
balance?: number;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export class UpdateCardDto {
|
|
40
|
+
@IsOptional()
|
|
41
|
+
@IsString()
|
|
42
|
+
clientId?: string;
|
|
43
|
+
|
|
44
|
+
@IsOptional()
|
|
45
|
+
@IsString()
|
|
46
|
+
accountId?: string;
|
|
47
|
+
|
|
48
|
+
@IsOptional()
|
|
49
|
+
@IsString()
|
|
50
|
+
cardType?: string;
|
|
51
|
+
|
|
52
|
+
@IsOptional()
|
|
53
|
+
@IsString()
|
|
54
|
+
cardStatus?: string;
|
|
55
|
+
|
|
56
|
+
@IsOptional()
|
|
57
|
+
@Type(() => Date)
|
|
58
|
+
@IsDate()
|
|
59
|
+
expiresAt?: Date;
|
|
60
|
+
|
|
61
|
+
@IsOptional()
|
|
62
|
+
@IsNumber()
|
|
63
|
+
balance?: number;
|
|
64
|
+
}
|