@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.
@@ -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([
@@ -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;
@@ -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
  }
@@ -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);
@@ -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.8",
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.22",
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": "^22.14.1",
35
+ "@types/node": "^24.0.13",
36
36
  "typescript": "^5.8.3"
37
37
  }
38
38
  }