@wocker/mongodb-plugin 1.0.8 → 1.0.9-beta.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/lib/controllers/MongodbController.d.ts +2 -2
- package/lib/controllers/MongodbController.js +22 -6
- package/lib/makes/Config.d.ts +5 -0
- package/lib/makes/Config.js +6 -2
- package/lib/makes/Database.d.ts +2 -0
- package/lib/makes/Database.js +4 -2
- package/lib/services/MongodbService.js +25 -3
- package/package.json +3 -3
@@ -2,8 +2,8 @@ import { MongodbService } from "../services/MongodbService";
|
|
2
2
|
export declare class MongodbController {
|
3
3
|
protected readonly mongodbService: MongodbService;
|
4
4
|
constructor(mongodbService: MongodbService);
|
5
|
-
create(name?: string, username?: string, password?: string, imageName?: string, imageVersion?: string): Promise<void>;
|
6
|
-
upgrade(name?: string, imageName?: string, imageVersion?: string, volume?: string, configVolume?: string): Promise<void>;
|
5
|
+
create(name?: string, username?: string, password?: string, imageName?: string, imageVersion?: string, containerPort?: number): Promise<void>;
|
6
|
+
upgrade(name?: string, imageName?: string, imageVersion?: string, volume?: string, configVolume?: string, containerPort?: number, enableAdmin?: boolean, disableAdmin?: boolean): Promise<void>;
|
7
7
|
destroy(name: string, yes?: boolean, force?: boolean): Promise<void>;
|
8
8
|
use(name: string): Promise<void>;
|
9
9
|
start(name?: string, restart?: boolean): Promise<void>;
|
@@ -28,26 +28,36 @@ let MongodbController = class MongodbController {
|
|
28
28
|
constructor(mongodbService) {
|
29
29
|
this.mongodbService = mongodbService;
|
30
30
|
}
|
31
|
-
create(name, username, password, imageName, imageVersion) {
|
31
|
+
create(name, username, password, imageName, imageVersion, containerPort) {
|
32
32
|
return __awaiter(this, void 0, void 0, function* () {
|
33
33
|
yield this.mongodbService.create({
|
34
34
|
name,
|
35
35
|
username,
|
36
36
|
password,
|
37
37
|
imageName,
|
38
|
-
imageVersion
|
38
|
+
imageVersion,
|
39
|
+
containerPort
|
39
40
|
});
|
40
41
|
});
|
41
42
|
}
|
42
|
-
upgrade(name, imageName, imageVersion, volume, configVolume) {
|
43
|
+
upgrade(name, imageName, imageVersion, volume, configVolume, containerPort, enableAdmin, disableAdmin) {
|
43
44
|
return __awaiter(this, void 0, void 0, function* () {
|
44
45
|
yield this.mongodbService.upgrade({
|
45
46
|
name,
|
46
47
|
imageName,
|
47
48
|
imageVersion,
|
48
49
|
volume,
|
49
|
-
configVolume
|
50
|
+
configVolume,
|
51
|
+
containerPort
|
50
52
|
});
|
53
|
+
if (typeof enableAdmin !== "undefined") {
|
54
|
+
this.mongodbService.config.admin.enabled = true;
|
55
|
+
this.mongodbService.config.save();
|
56
|
+
}
|
57
|
+
if (typeof disableAdmin !== "undefined") {
|
58
|
+
this.mongodbService.config.admin.enabled = false;
|
59
|
+
this.mongodbService.config.save();
|
60
|
+
}
|
51
61
|
});
|
52
62
|
}
|
53
63
|
destroy(name, yes, force) {
|
@@ -126,8 +136,10 @@ __decorate([
|
|
126
136
|
alias: "I",
|
127
137
|
description: "The image version to start the service with"
|
128
138
|
})),
|
139
|
+
__param(5, (0, core_1.Option)("container-port")),
|
140
|
+
__param(5, (0, core_1.Description)("Port on which the database container will be accessible on the host")),
|
129
141
|
__metadata("design:type", Function),
|
130
|
-
__metadata("design:paramtypes", [String, String, String, String, String]),
|
142
|
+
__metadata("design:paramtypes", [String, String, String, String, String, Number]),
|
131
143
|
__metadata("design:returntype", Promise)
|
132
144
|
], MongodbController.prototype, "create", null);
|
133
145
|
__decorate([
|
@@ -154,8 +166,12 @@ __decorate([
|
|
154
166
|
alias: "V",
|
155
167
|
description: "The config volume name to start the service with"
|
156
168
|
})),
|
169
|
+
__param(5, (0, core_1.Option)("container-port")),
|
170
|
+
__param(5, (0, core_1.Description)("Port on which the database container will be accessible on the host")),
|
171
|
+
__param(6, (0, core_1.Option)("enable-admin")),
|
172
|
+
__param(7, (0, core_1.Option)("disable-admin")),
|
157
173
|
__metadata("design:type", Function),
|
158
|
-
__metadata("design:paramtypes", [String, String, String, String, String]),
|
174
|
+
__metadata("design:paramtypes", [String, String, String, String, String, Number, Boolean, Boolean]),
|
159
175
|
__metadata("design:returntype", Promise)
|
160
176
|
], MongodbController.prototype, "upgrade", null);
|
161
177
|
__decorate([
|
package/lib/makes/Config.d.ts
CHANGED
@@ -1,11 +1,16 @@
|
|
1
1
|
import { Database, DatabaseProps } from "./Database";
|
2
|
+
export type AdminConfig = {
|
3
|
+
enabled: boolean;
|
4
|
+
};
|
2
5
|
export type ConfigProps = {
|
3
6
|
default?: string;
|
4
7
|
databases?: DatabaseProps[];
|
8
|
+
admin?: AdminConfig;
|
5
9
|
};
|
6
10
|
export declare abstract class Config {
|
7
11
|
default?: string;
|
8
12
|
databases: Database[];
|
13
|
+
admin: AdminConfig;
|
9
14
|
constructor(props: ConfigProps);
|
10
15
|
setDatabase(database: Database): void;
|
11
16
|
hasDatabase(name: string): boolean;
|
package/lib/makes/Config.js
CHANGED
@@ -4,9 +4,12 @@ exports.Config = void 0;
|
|
4
4
|
const Database_1 = require("./Database");
|
5
5
|
class Config {
|
6
6
|
constructor(props) {
|
7
|
-
const { default: defaultDatabase, databases = [] } = props;
|
7
|
+
const { default: defaultDatabase, databases = [], admin: { enabled: enabledAdmin = true } = {} } = props;
|
8
8
|
this.default = defaultDatabase;
|
9
9
|
this.databases = databases.map(database => new Database_1.Database(database));
|
10
|
+
this.admin = {
|
11
|
+
enabled: enabledAdmin
|
12
|
+
};
|
10
13
|
}
|
11
14
|
setDatabase(database) {
|
12
15
|
let exists = false;
|
@@ -61,7 +64,8 @@ class Config {
|
|
61
64
|
default: this.default,
|
62
65
|
databases: this.databases.length > 0
|
63
66
|
? this.databases.map((database) => database.toObject())
|
64
|
-
: []
|
67
|
+
: [],
|
68
|
+
admin: this.admin
|
65
69
|
};
|
66
70
|
}
|
67
71
|
}
|
package/lib/makes/Database.d.ts
CHANGED
@@ -8,6 +8,7 @@ export type DatabaseProps = {
|
|
8
8
|
storage?: string;
|
9
9
|
volume?: string;
|
10
10
|
configVolume?: string;
|
11
|
+
containerPort?: number;
|
11
12
|
};
|
12
13
|
export declare class Database {
|
13
14
|
name: string;
|
@@ -15,6 +16,7 @@ export declare class Database {
|
|
15
16
|
imageVersion?: string;
|
16
17
|
username: string;
|
17
18
|
password: string;
|
19
|
+
containerPort?: number;
|
18
20
|
protected _configVolume?: string;
|
19
21
|
protected _volume?: string;
|
20
22
|
constructor(props: DatabaseProps);
|
package/lib/makes/Database.js
CHANGED
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Database = void 0;
|
4
4
|
class Database {
|
5
5
|
constructor(props) {
|
6
|
-
const { name, imageName, imageVersion, username, password, configStorage, configVolume, storage, volume } = props;
|
6
|
+
const { name, imageName, imageVersion, username, password, configStorage, configVolume, storage, volume, containerPort } = props;
|
7
7
|
this.name = name;
|
8
8
|
this.imageName = imageName;
|
9
9
|
this.imageVersion = imageVersion;
|
@@ -11,6 +11,7 @@ class Database {
|
|
11
11
|
this.password = password;
|
12
12
|
this._configVolume = configStorage || configVolume;
|
13
13
|
this._volume = storage || volume;
|
14
|
+
this.containerPort = containerPort;
|
14
15
|
}
|
15
16
|
get containerName() {
|
16
17
|
return `mongodb-${this.name}.ws`;
|
@@ -54,7 +55,8 @@ class Database {
|
|
54
55
|
username: this.username,
|
55
56
|
password: this.password,
|
56
57
|
volume: this._volume,
|
57
|
-
configVolume: this._configVolume
|
58
|
+
configVolume: this._configVolume,
|
59
|
+
containerPort: this.containerPort
|
58
60
|
};
|
59
61
|
}
|
60
62
|
}
|
@@ -101,6 +101,21 @@ let MongodbService = class MongodbService {
|
|
101
101
|
throw new Error("Passwords do not match");
|
102
102
|
}
|
103
103
|
}
|
104
|
+
if (!props.containerPort) {
|
105
|
+
const needPort = yield (0, utils_1.promptConfirm)({
|
106
|
+
message: "Do you need to expose container port?",
|
107
|
+
default: false
|
108
|
+
});
|
109
|
+
if (needPort) {
|
110
|
+
props.containerPort = yield (0, utils_1.promptInput)({
|
111
|
+
required: true,
|
112
|
+
message: "Container port:",
|
113
|
+
type: "number",
|
114
|
+
min: 1,
|
115
|
+
default: 27017
|
116
|
+
});
|
117
|
+
}
|
118
|
+
}
|
104
119
|
const database = new Database_1.Database({
|
105
120
|
name: props.name,
|
106
121
|
imageName: props.imageName,
|
@@ -132,6 +147,10 @@ let MongodbService = class MongodbService {
|
|
132
147
|
service.configVolume = props.configVolume;
|
133
148
|
changed = true;
|
134
149
|
}
|
150
|
+
if (props.containerPort) {
|
151
|
+
service.containerPort = props.containerPort;
|
152
|
+
changed = true;
|
153
|
+
}
|
135
154
|
if (changed) {
|
136
155
|
this.config.setDatabase(service);
|
137
156
|
this.config.save();
|
@@ -205,7 +224,10 @@ let MongodbService = class MongodbService {
|
|
205
224
|
volumes: [
|
206
225
|
`${database.configVolume}:/data/configdb`,
|
207
226
|
`${database.volume}:/data/db`
|
208
|
-
]
|
227
|
+
],
|
228
|
+
ports: database.containerPort ? [
|
229
|
+
`${database.containerPort}:27017`
|
230
|
+
] : undefined
|
209
231
|
});
|
210
232
|
}
|
211
233
|
const { State: { Running } } = yield container.inspect();
|
@@ -234,7 +256,7 @@ let MongodbService = class MongodbService {
|
|
234
256
|
catch (ignore) { }
|
235
257
|
}
|
236
258
|
yield this.dockerService.removeContainer(this.adminContainerName);
|
237
|
-
if (connections.length === 0) {
|
259
|
+
if (!this.config.admin.enabled || connections.length === 0) {
|
238
260
|
return;
|
239
261
|
}
|
240
262
|
let container = yield this.dockerService.getContainer(this.adminContainerName);
|
@@ -452,7 +474,7 @@ let MongodbService = class MongodbService {
|
|
452
474
|
table.push([
|
453
475
|
database.name + (database.name === this.config.default ? " (default)" : ""),
|
454
476
|
database.username,
|
455
|
-
database.containerName,
|
477
|
+
database.containerName + (database.containerPort ? `:${database.containerPort}` : ""),
|
456
478
|
database.image,
|
457
479
|
`${database.configVolume}\n${database.volume}`
|
458
480
|
]);
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@wocker/mongodb-plugin",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.9-beta.0",
|
4
4
|
"author": "Kris Papercut <krispcut@gmail.com>",
|
5
5
|
"description": "Mongodb plugin for wocker",
|
6
6
|
"license": "MIT",
|
@@ -26,13 +26,13 @@
|
|
26
26
|
"test": "echo \"Error: no test specified\" && exit 1"
|
27
27
|
},
|
28
28
|
"dependencies": {
|
29
|
-
"@wocker/core": "^1.0.
|
29
|
+
"@wocker/core": "^1.0.24",
|
30
30
|
"@wocker/utils": "^2.0.3",
|
31
31
|
"cli-table3": "^0.6.5",
|
32
32
|
"date-fns": "^4.1.0"
|
33
33
|
},
|
34
34
|
"devDependencies": {
|
35
|
-
"@types/node": "^
|
35
|
+
"@types/node": "^24.0.13",
|
36
36
|
"typescript": "^5.8.3"
|
37
37
|
}
|
38
38
|
}
|