@haku-sci/utils 1.3.0 → 1.4.0
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/README.md
CHANGED
|
@@ -25,6 +25,10 @@ the start_docker_services.bat method allows to run all required services from do
|
|
|
25
25
|
* Postgresql
|
|
26
26
|
* RabbitMQ
|
|
27
27
|
|
|
28
|
+
## Database
|
|
29
|
+
|
|
30
|
+
if the service uses a database, and this database doesn't exist in the system, it will be created automatically
|
|
31
|
+
|
|
28
32
|
## launch.json
|
|
29
33
|
|
|
30
34
|
The launch.json file allows to run all services (the project libs must be in the same directory as "services", which contains all services)
|
|
@@ -32,4 +36,4 @@ The launch.json file allows to run all services (the project libs must be in the
|
|
|
32
36
|
## other
|
|
33
37
|
|
|
34
38
|
Finally, the method executeFunction into the utils library lets call dynamically the function of an object, with parameters
|
|
35
|
-
(Format: object as class, function name as string, parameters as dictionary)
|
|
39
|
+
(Format: object as class, function name as string, parameters as dictionary)
|
|
@@ -7,5 +7,7 @@ export declare class MicroserviceService {
|
|
|
7
7
|
static sendTCPMessage(service: any, messagePattern: any, payload?: any): Promise<any>;
|
|
8
8
|
static emitTCPEvent(messagePattern: any, queue?: any, payload?: any): Promise<void>;
|
|
9
9
|
private static registerService;
|
|
10
|
+
private static getLocalServerAddress;
|
|
10
11
|
static bootstrapMicroservice(appModule: any): Promise<INestApplication>;
|
|
12
|
+
private static createDatabaseIfNotExists;
|
|
11
13
|
}
|
|
@@ -16,6 +16,7 @@ const microservices_1 = require("@nestjs/microservices");
|
|
|
16
16
|
const net = require("net");
|
|
17
17
|
const axios_1 = require("axios");
|
|
18
18
|
const rxjs_1 = require("rxjs");
|
|
19
|
+
const pg_1 = require("pg");
|
|
19
20
|
const HAKU_SCI_EXCHANGE = 'Haku-SciExchange';
|
|
20
21
|
let MicroserviceService = MicroserviceService_1 = class MicroserviceService {
|
|
21
22
|
static async projectName() {
|
|
@@ -67,34 +68,47 @@ let MicroserviceService = MicroserviceService_1 = class MicroserviceService {
|
|
|
67
68
|
},
|
|
68
69
|
});
|
|
69
70
|
try {
|
|
70
|
-
client.emit(messagePattern, payload);
|
|
71
|
+
await client.emit(messagePattern, payload);
|
|
71
72
|
}
|
|
72
73
|
finally {
|
|
73
74
|
client.close();
|
|
74
75
|
}
|
|
75
76
|
}
|
|
76
|
-
static async registerService(
|
|
77
|
+
static async registerService() {
|
|
77
78
|
const projectName = await this.projectName();
|
|
78
79
|
const serviceData = {
|
|
79
80
|
ID: projectName,
|
|
80
81
|
Name: projectName,
|
|
81
|
-
Address:
|
|
82
|
-
Port:
|
|
82
|
+
Address: this.serviceAddress.address,
|
|
83
|
+
Port: this.serviceAddress.port,
|
|
83
84
|
Check: {
|
|
84
|
-
TCP: `${
|
|
85
|
+
TCP: `${this.serviceAddress.address}:${this.serviceAddress.port}`,
|
|
85
86
|
Interval: "10s",
|
|
86
87
|
Timeout: "5s",
|
|
87
88
|
DeregisterCriticalServiceAfter: "1m"
|
|
88
89
|
}
|
|
89
90
|
};
|
|
90
91
|
await axios_1.default.put(`${process.env["CONSUL_URL"]}/v1/agent/service/register`, serviceData);
|
|
91
|
-
console.log(`Service registered with Consul on ${
|
|
92
|
+
console.log(`Service registered with Consul on ${this.serviceAddress.address}:${this.serviceAddress.port}`);
|
|
92
93
|
}
|
|
93
|
-
static async
|
|
94
|
+
static async getLocalServerAddress() {
|
|
94
95
|
const server = net.createServer();
|
|
95
96
|
server.listen(0);
|
|
96
97
|
await new Promise((resolve) => server.once('listening', resolve));
|
|
97
|
-
|
|
98
|
+
const address = server.address();
|
|
99
|
+
address.address = "localhost";
|
|
100
|
+
server.close();
|
|
101
|
+
return address;
|
|
102
|
+
}
|
|
103
|
+
static async bootstrapMicroservice(appModule) {
|
|
104
|
+
this.serviceAddress = !process.env["AWS_REGION"] ?
|
|
105
|
+
await this.getLocalServerAddress() :
|
|
106
|
+
{
|
|
107
|
+
address: `haku-sci-${process.env["AWS_APPLICATION"]}-${process.env["AWS_BRANCH"]}.${process.env["AWS_REGION"]}.elasticbeanstalk.com`,
|
|
108
|
+
port: 3000
|
|
109
|
+
};
|
|
110
|
+
if (process.env["RDS_DBNAME"])
|
|
111
|
+
this.createDatabaseIfNotExists();
|
|
98
112
|
const app = await core_1.NestFactory.create(appModule);
|
|
99
113
|
app.connectMicroservice({
|
|
100
114
|
transport: microservices_1.Transport.TCP,
|
|
@@ -115,13 +129,32 @@ let MicroserviceService = MicroserviceService_1 = class MicroserviceService {
|
|
|
115
129
|
});
|
|
116
130
|
}
|
|
117
131
|
await app.startAllMicroservices();
|
|
118
|
-
await app.listen(
|
|
119
|
-
if (process.env["CONSUL_URL"])
|
|
120
|
-
|
|
121
|
-
this.registerService(tcpServer.address());
|
|
122
|
-
}
|
|
132
|
+
await app.listen(0);
|
|
133
|
+
if (process.env["CONSUL_URL"])
|
|
134
|
+
this.registerService();
|
|
123
135
|
return app;
|
|
124
136
|
}
|
|
137
|
+
static async createDatabaseIfNotExists() {
|
|
138
|
+
const client = new pg_1.Client({
|
|
139
|
+
host: process.env["RDS_HOSTNAME"],
|
|
140
|
+
port: process.env["RDS_PORT"],
|
|
141
|
+
user: process.env["RDS_USERNAME"],
|
|
142
|
+
password: process.env["RDS_PASSWORD"],
|
|
143
|
+
database: "postgres",
|
|
144
|
+
});
|
|
145
|
+
try {
|
|
146
|
+
await client.connect();
|
|
147
|
+
const result = await client.query(`SELECT 1 FROM pg_database WHERE datname = $1`, [process.env["RDS_DBNAME"]]);
|
|
148
|
+
if (result.rowCount === 0) {
|
|
149
|
+
console.log(`Database "${process.env["RDS_DBNAME"]}" does not exist. Creating...`);
|
|
150
|
+
await client.query(`CREATE DATABASE "${process.env["RDS_DBNAME"]}"`);
|
|
151
|
+
console.log(`Database "${process.env["RDS_DBNAME"]}" created successfully.`);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
finally {
|
|
155
|
+
await client.end();
|
|
156
|
+
}
|
|
157
|
+
}
|
|
125
158
|
};
|
|
126
159
|
exports.MicroserviceService = MicroserviceService;
|
|
127
160
|
exports.MicroserviceService = MicroserviceService = MicroserviceService_1 = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"microservice.service.js","sourceRoot":"","sources":["../../src/microservice/microservice.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAiF;AACjF,0CAAuC;AACvC,6BAA6B;AAC7B,uCAA2C;AAC3C,
|
|
1
|
+
{"version":3,"file":"microservice.service.js","sourceRoot":"","sources":["../../src/microservice/microservice.service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@haku-sci/utils",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "utils from haku-sci. Library only",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@nestjs/microservices": "^10.4.15",
|
|
41
41
|
"@nestjs/platform-express": "^10.4.15",
|
|
42
|
-
"axios": "^1.7.9"
|
|
42
|
+
"axios": "^1.7.9",
|
|
43
|
+
"pg": "^8.13.1"
|
|
43
44
|
}
|
|
44
45
|
}
|