@galadrim/galadmin 0.1.97 → 0.1.99

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,6 +1,6 @@
1
1
  {
2
2
  "name": "@galadrim/galadmin",
3
- "version": "0.1.97",
3
+ "version": "0.1.99",
4
4
  "main": "dist/index.js",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1",
package/src/api.ts CHANGED
@@ -298,6 +298,29 @@ export default (db, config, user) => {
298
298
  }
299
299
  }
300
300
 
301
+ function formatValueForInsertion(value: any) {
302
+ if (value !== 0 && !value) {
303
+ return "NULL"
304
+ }
305
+ if (value instanceof Date) {
306
+ return value.toISOString()
307
+ }
308
+ if (typeof value === "string") {
309
+ return "'" + value.replace(/'/g, "\\'") + "'"
310
+ }
311
+ if (typeof value === "object") {
312
+ return "'" + JSON.stringify(value).replace(/'/g, "\\'") + "'"
313
+ }
314
+ if (typeof value === "boolean") {
315
+ return value ? "TRUE" : "FALSE"
316
+ }
317
+ if (typeof value === "number") {
318
+ return value
319
+ }
320
+
321
+ return value
322
+ }
323
+
301
324
  app.post('/recordsExport', async function (req, res) {
302
325
  const view = config.views[req.body.viewIndex];
303
326
  const { rows: records, error } = await getRecords({
@@ -379,7 +402,7 @@ export default (db, config, user) => {
379
402
 
380
403
  let queryString = "INSERT INTO ?? (" + columns.map(x => "`" + x + "`").join(", ") + ") VALUES";
381
404
  for (let record of records) {
382
- queryString += " (" + columns.map(x => record[x] ? ("'" + record[x].replace(/'/g, "\\'") + "'") : "NULL").join(", ") + "),";
405
+ queryString += " (" + columns.map(x => formatValueForInsertion(record[x])).join(", ") + "),";
383
406
  }
384
407
  queryString = queryString.slice(0, -1) + " ON DUPLICATE KEY UPDATE";
385
408
  for (let column of columns) {
@@ -423,7 +446,7 @@ export default (db, config, user) => {
423
446
  }
424
447
 
425
448
  const records = await panel.parseImportFile(files.data[0]);
426
- const columns = [panel.createConfig.recordIdKey];
449
+ const columns = [];
427
450
  if (records.length === 0) {
428
451
  return res.send({
429
452
  affectedRows: 0
@@ -439,9 +462,12 @@ export default (db, config, user) => {
439
462
  }
440
463
  }
441
464
 
442
- let queryString = "INSERT INTO ?? (" + columns.map(x => "`" + x + "`").join(", ") + ") VALUES";
465
+ console.log('columns', columns)
466
+
467
+ let queryString = "INSERT INTO ?? (" + panel.createConfig.recordIdKey + ", " +columns.map(x => "`" + x + "`").join(", ") + ") VALUES";
443
468
  for (let record of records) {
444
- queryString += " (" + fields.recordId[0] + ", " + columns.map(x => record[x] ? ("'" + record[x].replace(/'/g, "\\'") + "'") : "NULL").join(", ") + "),";
469
+ console.log('record', record)
470
+ queryString += " (" + fields.recordId[0] + ", " + columns.map(x => formatValueForInsertion(record[x])).join(", ") + "),";
445
471
  }
446
472
  queryString = queryString.slice(0, -1) + " ON DUPLICATE KEY UPDATE";
447
473
  for (let column of columns) {
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "files": {
3
3
  "main.css": "/_HOMEPAGE_/static/css/main.f5549e80.css",
4
- "main.js": "/_HOMEPAGE_/static/js/main.440ba8e1.js",
4
+ "main.js": "/_HOMEPAGE_/static/js/main.bcdd7d54.js",
5
5
  "static/media/gt-eesti-medium.woff": "/_HOMEPAGE_/static/media/gt-eesti-medium.a48c02fa57e83ab6ddcd.woff",
6
6
  "static/media/gt-eesti-regular.woff": "/_HOMEPAGE_/static/media/gt-eesti-regular.304a7ae06ee4a4d5d04a.woff",
7
7
  "static/media/logo.png": "/_HOMEPAGE_/static/media/logo.e407b9ca7e302466a07d.png",
8
8
  "static/media/cubano.woff": "/_HOMEPAGE_/static/media/cubano.4eaa47ef94222121a371.woff",
9
9
  "index.html": "/_HOMEPAGE_/index.html",
10
10
  "main.f5549e80.css.map": "/_HOMEPAGE_/static/css/main.f5549e80.css.map",
11
- "main.440ba8e1.js.map": "/_HOMEPAGE_/static/js/main.440ba8e1.js.map"
11
+ "main.bcdd7d54.js.map": "/_HOMEPAGE_/static/js/main.bcdd7d54.js.map"
12
12
  },
13
13
  "entrypoints": [
14
14
  "static/css/main.f5549e80.css",
15
- "static/js/main.440ba8e1.js"
15
+ "static/js/main.bcdd7d54.js"
16
16
  ]
17
17
  }
@@ -1 +1 @@
1
- <!doctype html><html lang="fr"><head><script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script><script src="https://momentjs.com/downloads/moment-timezone-with-data-10-year-range.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/locale/fr.js"></script><script async="async" defer="defer" src="https://cdnjs.cloudflare.com/ajax/libs/spectrum/1.8.0/spectrum.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/air-datepicker/2.2.3/js/datepicker.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/air-datepicker/2.2.3/js/i18n/datepicker.fr.min.js"></script><script async="async" defer="defer" src="https://cdnjs.cloudflare.com/ajax/libs/downloadjs/1.4.8/download.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.4.0/Chart.min.js"></script><script async="async" defer="defer" src="https://cdn.jsdelivr.net/npm/sweetalert"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/quill/1.3.6/quill.min.js"></script><script src="https://sdk.amazonaws.com/js/aws-sdk-2.606.0.min.js"></script><script src="https://kit.fontawesome.com/75b28933ed.js" crossorigin="anonymous" async="async" defer="defer"></script><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/air-datepicker/2.2.3/css/datepicker.min.css"/><link rel="stylesheet" href="/_HOMEPAGE_/spectrum.css"/><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/quill/1.3.6/quill.snow.min.css"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta charset="utf-8"/><link rel="icon" href="/_HOMEPAGE_/favicon.png"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><link rel="manifest" href="/_HOMEPAGE_/manifest.json"/><title>Back-office</title><script defer="defer" src="/_HOMEPAGE_/static/js/main.440ba8e1.js"></script><link href="/_HOMEPAGE_/static/css/main.f5549e80.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
1
+ <!doctype html><html lang="fr"><head><script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script><script src="https://momentjs.com/downloads/moment-timezone-with-data-10-year-range.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/locale/fr.js"></script><script async="async" defer="defer" src="https://cdnjs.cloudflare.com/ajax/libs/spectrum/1.8.0/spectrum.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/air-datepicker/2.2.3/js/datepicker.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/air-datepicker/2.2.3/js/i18n/datepicker.fr.min.js"></script><script async="async" defer="defer" src="https://cdnjs.cloudflare.com/ajax/libs/downloadjs/1.4.8/download.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.4.0/Chart.min.js"></script><script async="async" defer="defer" src="https://cdn.jsdelivr.net/npm/sweetalert"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/quill/1.3.6/quill.min.js"></script><script src="https://sdk.amazonaws.com/js/aws-sdk-2.606.0.min.js"></script><script src="https://kit.fontawesome.com/75b28933ed.js" crossorigin="anonymous" async="async" defer="defer"></script><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/air-datepicker/2.2.3/css/datepicker.min.css"/><link rel="stylesheet" href="/_HOMEPAGE_/spectrum.css"/><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/quill/1.3.6/quill.snow.min.css"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta charset="utf-8"/><link rel="icon" href="/_HOMEPAGE_/favicon.png"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><link rel="manifest" href="/_HOMEPAGE_/manifest.json"/><title>Back-office</title><script defer="defer" src="/_HOMEPAGE_/static/js/main.bcdd7d54.js"></script><link href="/_HOMEPAGE_/static/css/main.f5549e80.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>