@galadrim/galadmin 0.1.54 → 0.1.56
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/dist/api.js +4 -3
- package/dist/api.js.map +1 -1
- package/dist/index.js +13 -1
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/config.d.ts +8 -1
- package/dist/utils/dbManager.d.ts +1 -0
- package/dist/utils/dbManager.js +61 -12
- package/dist/utils/dbManager.js.map +1 -1
- package/package.json +3 -1
- package/src/api.ts +3 -3
- package/src/front/build/asset-manifest.json +3 -3
- package/src/front/build/index.html +1 -1
- package/src/front/build/static/js/{main.503d80f3.js → main.49c40aa8.js} +3 -3
- package/src/front/build/static/js/{main.503d80f3.js.map → main.49c40aa8.js.map} +1 -1
- package/src/front/node_modules/.cache/.eslintcache +1 -1
- package/src/front/node_modules/.cache/babel-loader/29b552d1ccfaa57e501edf0a4687d46a8d6a96661eafba68c1c66b65eaf66df6.json +1 -0
- package/src/front/src/components/AddFilterButton.js +2 -2
- package/src/index.ts +13 -1
- package/src/types/config.ts +10 -2
- package/src/utils/dbManager.ts +64 -12
- package/src/front/node_modules/.cache/babel-loader/8a43a311e9031dfe234b8d67ae726a8fcec55a23838c5996ddb72a93ca071631.json +0 -1
- /package/src/front/build/static/js/{main.503d80f3.js.LICENSE.txt → main.49c40aa8.js.LICENSE.txt} +0 -0
package/dist/types/config.d.ts
CHANGED
|
@@ -280,7 +280,14 @@ export type Config = {
|
|
|
280
280
|
password: string;
|
|
281
281
|
};
|
|
282
282
|
authRoles?: AuthRole[];
|
|
283
|
-
mysql
|
|
283
|
+
mysql?: {
|
|
284
|
+
host: string;
|
|
285
|
+
user: string;
|
|
286
|
+
password: string;
|
|
287
|
+
database: string;
|
|
288
|
+
port?: number;
|
|
289
|
+
};
|
|
290
|
+
postgresql?: {
|
|
284
291
|
host: string;
|
|
285
292
|
user: string;
|
|
286
293
|
password: string;
|
package/dist/utils/dbManager.js
CHANGED
|
@@ -2,23 +2,72 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const mysql = require("mysql");
|
|
4
4
|
const mysql2 = require("mysql2");
|
|
5
|
+
const pg = require("pg");
|
|
6
|
+
function convertQuery(mysqlQuery, params) {
|
|
7
|
+
let pgQuery = '';
|
|
8
|
+
let pgParams = [];
|
|
9
|
+
let paramIndex = 1;
|
|
10
|
+
let charIndex = 0;
|
|
11
|
+
while (charIndex < mysqlQuery.length) {
|
|
12
|
+
if (mysqlQuery.charAt(charIndex) === '?' && mysqlQuery.charAt(charIndex + 1) === '?') {
|
|
13
|
+
pgQuery += params.shift();
|
|
14
|
+
charIndex += 2;
|
|
15
|
+
}
|
|
16
|
+
else if (mysqlQuery.charAt(charIndex) === '?') {
|
|
17
|
+
pgQuery += `$${paramIndex++}`;
|
|
18
|
+
pgParams.push(params.shift());
|
|
19
|
+
charIndex++;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
pgQuery += mysqlQuery.charAt(charIndex);
|
|
23
|
+
charIndex++;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
pgQuery,
|
|
28
|
+
pgParams,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
5
31
|
class dbManager {
|
|
6
32
|
init(config) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
33
|
+
if (config.mysql) {
|
|
34
|
+
this._db = (config.useMysql2 ? mysql2 : mysql).createPool({
|
|
35
|
+
connectionLimit: 10,
|
|
36
|
+
host: config.mysql.host,
|
|
37
|
+
user: config.mysql.user,
|
|
38
|
+
password: config.mysql.password,
|
|
39
|
+
database: config.mysql.database,
|
|
40
|
+
port: config.mysql.port || 3306,
|
|
41
|
+
dateStrings: true,
|
|
42
|
+
multipleStatements: true
|
|
43
|
+
});
|
|
44
|
+
this.dbType = "MYSQL";
|
|
45
|
+
}
|
|
46
|
+
else if (config.postgresql) {
|
|
47
|
+
this._db = new pg.Pool({
|
|
48
|
+
host: config.postgresql.host,
|
|
49
|
+
user: config.postgresql.user,
|
|
50
|
+
password: config.postgresql.password,
|
|
51
|
+
database: config.postgresql.database,
|
|
52
|
+
port: config.postgresql.port || 5432,
|
|
53
|
+
});
|
|
54
|
+
this.dbType = "POSTGRESQL";
|
|
55
|
+
}
|
|
17
56
|
}
|
|
18
57
|
async query(queryString, args = []) {
|
|
19
58
|
return new Promise((resolve, reject) => {
|
|
20
|
-
this.
|
|
21
|
-
|
|
59
|
+
if (this.dbType === "POSTGRESQL") {
|
|
60
|
+
const result = convertQuery(queryString, args);
|
|
61
|
+
queryString = result.pgQuery;
|
|
62
|
+
args = result.pgParams;
|
|
63
|
+
}
|
|
64
|
+
this._db.query(queryString, args, (a, b, c) => {
|
|
65
|
+
if (this.dbType === "MYSQL") {
|
|
66
|
+
resolve({ err: a, rows: b, fields: c });
|
|
67
|
+
}
|
|
68
|
+
else if (this.dbType === "POSTGRESQL") {
|
|
69
|
+
resolve({ err: a, rows: b === null || b === void 0 ? void 0 : b.rows, fields: b === null || b === void 0 ? void 0 : b.fields });
|
|
70
|
+
}
|
|
22
71
|
});
|
|
23
72
|
});
|
|
24
73
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dbManager.js","sourceRoot":"","sources":["../../src/utils/dbManager.ts"],"names":[],"mappings":";;AAAA,+BAA+B;AAC/B,iCAAiC;
|
|
1
|
+
{"version":3,"file":"dbManager.js","sourceRoot":"","sources":["../../src/utils/dbManager.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@galadrim/galadmin",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.56",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"aws-sdk": "^2.958.0",
|
|
19
19
|
"axios": "^0.21.1",
|
|
20
20
|
"bcryptjs": "^2.4.3",
|
|
21
|
+
"connect-pg-simple": "^9.0.0",
|
|
21
22
|
"express": "^4.17.1",
|
|
22
23
|
"express-mysql-session": "^2.1.6",
|
|
23
24
|
"express-session": "^1.17.2",
|
|
@@ -27,6 +28,7 @@
|
|
|
27
28
|
"multiparty": "^4.2.2",
|
|
28
29
|
"mysql": "^2.18.1",
|
|
29
30
|
"mysql2": "^2.3.3",
|
|
31
|
+
"pg": "^8.11.3",
|
|
30
32
|
"rollup": "^2.56.2",
|
|
31
33
|
"serialize-javascript": "^6.0.0",
|
|
32
34
|
"ssh2-sftp-client": "^9.0.4"
|
package/src/api.ts
CHANGED
|
@@ -61,8 +61,8 @@ export default (db, config, user) => {
|
|
|
61
61
|
queryString += ")"
|
|
62
62
|
}
|
|
63
63
|
const limit = params.allRecords ? 999999 : parseInt(params.limit)
|
|
64
|
-
const query = params.customQuery || ("SELECT " + (params.selectExpression || "*") + " FROM ?? " + (params.join || "") + queryString + " " + (params.groupBy ? "GROUP BY " + params.groupBy : "") + (params.orderBy || params.primaryId ? " ORDER BY " + (params.orderBy || `${params.table}.${params.primaryId}`) : "") + (params.isDesc ? " DESC" : "") + " LIMIT
|
|
65
|
-
const queryParams = [params.table, Math.max((params.page - 1) * limit, 0)
|
|
64
|
+
const query = params.customQuery || ("SELECT " + (params.selectExpression || "*") + " FROM ?? " + (params.join || "") + queryString + " " + (params.groupBy ? "GROUP BY " + params.groupBy : "") + (params.orderBy || params.primaryId ? " ORDER BY " + (params.orderBy || `${params.table}.${params.primaryId}`) : "") + (params.isDesc ? " DESC" : "") + " LIMIT ? OFFSET ?")
|
|
65
|
+
const queryParams = [params.table, limit, Math.max((params.page - 1) * limit, 0)]
|
|
66
66
|
const { err, rows } = await db.query(query, queryParams)
|
|
67
67
|
if (err) {
|
|
68
68
|
console.error(err)
|
|
@@ -695,7 +695,7 @@ export default (db, config, user) => {
|
|
|
695
695
|
|
|
696
696
|
|
|
697
697
|
async function enrichConfig(config, db) {
|
|
698
|
-
const { rows: info } = await db.query("SELECT * FROM information_schema.columns WHERE table_schema = ?", [config.mysql.database])
|
|
698
|
+
const { rows: info } = await db.query("SELECT * FROM information_schema.columns WHERE table_schema = ?", [config.mysql?.database || config.postgresql?.database])
|
|
699
699
|
for (const view of config.views) {
|
|
700
700
|
if (view.type == "table") {
|
|
701
701
|
const tableName = view.tableName;
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"files": {
|
|
3
3
|
"main.css": "/_HOMEPAGE_/static/css/main.b070e545.css",
|
|
4
|
-
"main.js": "/_HOMEPAGE_/static/js/main.
|
|
4
|
+
"main.js": "/_HOMEPAGE_/static/js/main.49c40aa8.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.b070e545.css.map": "/_HOMEPAGE_/static/css/main.b070e545.css.map",
|
|
11
|
-
"main.
|
|
11
|
+
"main.49c40aa8.js.map": "/_HOMEPAGE_/static/js/main.49c40aa8.js.map"
|
|
12
12
|
},
|
|
13
13
|
"entrypoints": [
|
|
14
14
|
"static/css/main.b070e545.css",
|
|
15
|
-
"static/js/main.
|
|
15
|
+
"static/js/main.49c40aa8.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.
|
|
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.49c40aa8.js"></script><link href="/_HOMEPAGE_/static/css/main.b070e545.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
|