UNPKG

@wocker/mariadb-plugin

Version:
110 lines (109 loc) 3.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Config = void 0; const Service_1 = require("./Service"); class Config { constructor(data) { var _a, _b; const { default: defaultService, enableAdmin, adminHostname, admin = { enabled: enableAdmin, hostname: adminHostname || "dbadmin-mariadb.workspace" }, services = [] } = data; this.default = defaultService; this.admin = { enabled: (_a = admin.enabled) !== null && _a !== void 0 ? _a : false, hostname: (_b = admin.hostname) !== null && _b !== void 0 ? _b : "dbadmin-mariadb.workspace" }; this.services = services.map((s) => { return new Service_1.Service(s); }); } hasService(name) { const service = this.services.find((service) => { return service.name === name; }); return !!service; } getService(name) { const service = this.services.find((service) => { return service.name === name; }); if (!service) { throw new Error(`Mariadb "${name}" service not found`); } return service; } hasDefaultService() { if (!this.default) { return false; } return this.hasService(this.default); } getDefaultService() { if (!this.default) { throw new Error("No services are installed by default"); } return this.getService(this.default); } getServiceOrDefault(name) { if (!name) { return this.getDefaultService(); } return this.getService(name); } setService(service) { let exists = false; for (let i = 0; i < this.services.length; i++) { if (this.services[i].name === service.name) { exists = true; this.services[i] = service; } } if (!exists) { this.services.push(service); } if (!this.default) { this.default = service.name; } } updateService(name, service) { for (let i = 0; i < this.services.length; i++) { if (this.services[i].name === name) { this.services[i] = new Service_1.Service(Object.assign(Object.assign({}, this.services[i].toObject()), service)); break; } } } unsetService(name) { this.services = this.services.filter((service) => { return service.name !== name; }); if (this.default === name) { delete this.default; } } toObject() { return { default: this.default, admin: this.admin, services: this.services.length > 0 ? this.services.map((service) => { return service.toObject(); }) : undefined }; } static make(fs, configPath) { const data = fs.exists(configPath) ? fs.readJSON(configPath) : { admin: { enabled: true } }; return new class extends Config { save() { fs.writeJSON(configPath, this.toObject()); } }(data); } } exports.Config = Config;