dbgate-api-premium 6.7.2-alpha.1 → 6.7.2

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dbgate-api-premium",
3
3
  "main": "src/index.js",
4
- "version": "6.7.2-alpha.1",
4
+ "version": "6.7.2",
5
5
  "homepage": "https://dbgate.org/",
6
6
  "repository": {
7
7
  "type": "git",
@@ -30,10 +30,10 @@
30
30
  "compare-versions": "^3.6.0",
31
31
  "cors": "^2.8.5",
32
32
  "cross-env": "^6.0.3",
33
- "dbgate-datalib": "^6.7.2-alpha.1",
33
+ "dbgate-datalib": "^6.7.2",
34
34
  "dbgate-query-splitter": "^4.11.9",
35
- "dbgate-sqltree": "^6.7.2-alpha.1",
36
- "dbgate-tools": "^6.7.2-alpha.1",
35
+ "dbgate-sqltree": "^6.7.2",
36
+ "dbgate-tools": "^6.7.2",
37
37
  "debug": "^4.3.4",
38
38
  "diff": "^5.0.0",
39
39
  "diff2html": "^3.4.13",
@@ -86,7 +86,7 @@
86
86
  "devDependencies": {
87
87
  "@types/fs-extra": "^9.0.11",
88
88
  "@types/lodash": "^4.14.149",
89
- "dbgate-types": "^6.7.2-alpha.1",
89
+ "dbgate-types": "^6.7.2",
90
90
  "env-cmd": "^10.1.0",
91
91
  "jsdoc-to-markdown": "^9.0.5",
92
92
  "node-loader": "^1.0.2",
@@ -289,16 +289,11 @@ module.exports = {
289
289
  const res = await lock.acquire('settings', async () => {
290
290
  const currentValue = await this.loadSettings();
291
291
  try {
292
- let updated = currentValue;
292
+ let updated = {
293
+ ...currentValue,
294
+ ...values,
295
+ };
293
296
  if (process.env.STORAGE_DATABASE) {
294
- updated = {
295
- ...currentValue,
296
- ..._.mapValues(values, v => {
297
- if (v === true) return 'true';
298
- if (v === false) return 'false';
299
- return v;
300
- }),
301
- };
302
297
  await storage.writeConfig({
303
298
  group: 'settings',
304
299
  config: updated,
@@ -252,12 +252,51 @@ async function loadSuperadminPermissions() {
252
252
  return [...getPredefinedPermissions('superadmin'), ...rolePermissions];
253
253
  }
254
254
 
255
+ function deserializeFromStorage(value, valueType) {
256
+ switch (valueType) {
257
+ case 'null': {
258
+ return null;
259
+ }
260
+ case 'json': {
261
+ try {
262
+ return JSON.parse(value);
263
+ } catch (err) {
264
+ return value;
265
+ }
266
+ }
267
+ case 'number': {
268
+ return Number(value);
269
+ }
270
+ case 'boolean': {
271
+ return value == '1' || value == 'true';
272
+ }
273
+ default:
274
+ return value;
275
+ }
276
+ }
277
+
278
+ function serializeToStorage(value) {
279
+ if (value === null || value === undefined) {
280
+ return [null, 'null'];
281
+ }
282
+ if (typeof value === 'object') {
283
+ return [JSON.stringify(value), 'json'];
284
+ }
285
+ if (typeof value === 'number') {
286
+ return [value.toString(), 'number'];
287
+ }
288
+ if (typeof value === 'boolean') {
289
+ return [value ? 'true' : 'false', 'boolean'];
290
+ }
291
+ return [value.toString(), 'string'];
292
+ }
293
+
255
294
  async function storageReadConfig(group) {
256
295
  const resp = await storageSelectFmt('select * from ~config where ~group = %v', group);
257
296
  if (!resp) {
258
297
  return null;
259
298
  }
260
- return _.fromPairs(resp.map(x => [x.key, x.value]));
299
+ return _.fromPairs(resp.map(x => [x.key, deserializeFromStorage(x.value, x.valueType)]));
261
300
  }
262
301
 
263
302
  async function storageWriteConfig(group, config) {
@@ -272,7 +311,14 @@ async function storageWriteConfig(group, config) {
272
311
 
273
312
  for (const key in config) {
274
313
  const dmp = driver.createDumper();
275
- dmp.put('insert into config (~group, ~key, ~value) values (%v, %v, %v)', group, key, config[key]);
314
+ const [value, valueType] = serializeToStorage(config[key]);
315
+ dmp.put(
316
+ 'insert into ~config (~group, ~key, ~value, ~valueType) values (%v, %v, %v, %v)',
317
+ group,
318
+ key,
319
+ value,
320
+ valueType
321
+ );
276
322
  await driver.query(conn, dmp.s);
277
323
  }
278
324
  }
@@ -1,5 +1,5 @@
1
1
 
2
2
  module.exports = {
3
- version: '6.7.2-alpha.1',
4
- buildTime: '2025-11-26T13:45:51.440Z'
3
+ version: '6.7.2',
4
+ buildTime: '2025-12-03T13:01:57.532Z'
5
5
  };
@@ -360,6 +360,12 @@ module.exports = {
360
360
  "columnName": "value",
361
361
  "dataType": "varchar(1000)",
362
362
  "notNull": false
363
+ },
364
+ {
365
+ "pureName": "config",
366
+ "columnName": "valueType",
367
+ "dataType": "varchar(50)",
368
+ "notNull": false
363
369
  }
364
370
  ],
365
371
  "foreignKeys": [],
@@ -126,7 +126,7 @@ async function sendToAuditLog(
126
126
  }
127
127
  const config = require('../controllers/config');
128
128
  const settings = await config.getCachedSettings();
129
- if (settings?.['storage.useAuditLog'] != 'true') {
129
+ if (!settings?.['storage.useAuditLog'] || settings?.['storage.useAuditLog'] == 'false') {
130
130
  return;
131
131
  }
132
132