prostgles-server 2.0.183 → 2.0.186
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/DboBuilder.d.ts +1 -1
- package/dist/DboBuilder.d.ts.map +1 -1
- package/dist/DboBuilder.js +2 -1
- package/dist/DboBuilder.js.map +1 -1
- package/dist/PublishParser.d.ts +1 -1
- package/dist/PublishParser.d.ts.map +1 -1
- package/dist/PublishParser.js.map +1 -1
- package/dist/QueryBuilder.d.ts +7 -3
- package/dist/QueryBuilder.d.ts.map +1 -1
- package/dist/TableConfig.d.ts +24 -5
- package/dist/TableConfig.d.ts.map +1 -1
- package/dist/TableConfig.js +60 -21
- package/dist/TableConfig.js.map +1 -1
- package/lib/DboBuilder.d.ts +1 -1
- package/lib/DboBuilder.d.ts.map +1 -1
- package/lib/DboBuilder.js +2 -1
- package/lib/DboBuilder.ts +3 -2
- package/lib/PublishParser.d.ts +1 -1
- package/lib/PublishParser.d.ts.map +1 -1
- package/lib/PublishParser.ts +2 -2
- package/lib/TableConfig.d.ts +24 -5
- package/lib/TableConfig.d.ts.map +1 -1
- package/lib/TableConfig.js +60 -21
- package/lib/TableConfig.ts +376 -323
- package/package.json +2 -2
- package/tests/client/PID.txt +1 -1
- package/tests/client/package-lock.json +15 -15
- package/tests/client/package.json +1 -1
- package/tests/server/package-lock.json +3 -3
package/lib/TableConfig.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AnyObject, TableInfo } from "prostgles-types";
|
|
1
2
|
import { JoinInfo } from "./DboBuilder";
|
|
2
3
|
import { ALLOWED_EXTENSION, ALLOWED_CONTENT_TYPE } from "./FileManager";
|
|
3
4
|
import { DB, DBHandlerServer, Prostgles } from "./Prostgles";
|
|
@@ -6,7 +7,19 @@ declare type ColExtraInfo = {
|
|
|
6
7
|
max?: string | number;
|
|
7
8
|
hint?: string;
|
|
8
9
|
};
|
|
9
|
-
declare type
|
|
10
|
+
export declare type I18N_Config<LANG_IDS> = {
|
|
11
|
+
[lang_id in keyof LANG_IDS]: string;
|
|
12
|
+
};
|
|
13
|
+
export declare const parseI18N: <LANG_IDS, Def extends string>(params: {
|
|
14
|
+
config?: string | I18N_Config<LANG_IDS>;
|
|
15
|
+
lang?: string | keyof LANG_IDS;
|
|
16
|
+
defaultLang: string | keyof LANG_IDS;
|
|
17
|
+
defaultValue: Def;
|
|
18
|
+
}) => string | Def;
|
|
19
|
+
declare type BaseTableDefinition<LANG_IDS = AnyObject> = {
|
|
20
|
+
info?: {
|
|
21
|
+
label?: string | I18N_Config<LANG_IDS>;
|
|
22
|
+
};
|
|
10
23
|
dropIfExistsCascade?: boolean;
|
|
11
24
|
dropIfExists?: boolean;
|
|
12
25
|
};
|
|
@@ -96,7 +109,7 @@ declare type ColumnConfig<LANG_IDS = {
|
|
|
96
109
|
en: 1;
|
|
97
110
|
}> = NamedJoinColumn | MediaColumn | (BaseColumn<LANG_IDS> & (SQLDefColumn | ReferencedColumn | TextColumn));
|
|
98
111
|
declare type TableDefinition<LANG_IDS> = {
|
|
99
|
-
columns
|
|
112
|
+
columns?: {
|
|
100
113
|
[column_name: string]: ColumnConfig<LANG_IDS>;
|
|
101
114
|
};
|
|
102
115
|
constraints?: {
|
|
@@ -144,18 +157,24 @@ declare type TableDefinition<LANG_IDS> = {
|
|
|
144
157
|
export declare type TableConfig<LANG_IDS = {
|
|
145
158
|
en: 1;
|
|
146
159
|
}> = {
|
|
147
|
-
[table_name: string]: BaseTableDefinition & (TableDefinition<LANG_IDS> | LookupTableDefinition<LANG_IDS>);
|
|
160
|
+
[table_name: string]: BaseTableDefinition<LANG_IDS> & (TableDefinition<LANG_IDS> | LookupTableDefinition<LANG_IDS>);
|
|
148
161
|
};
|
|
149
162
|
/**
|
|
150
163
|
* Will be run between initSQL and fileTable
|
|
151
164
|
*/
|
|
152
|
-
export default class TableConfigurator {
|
|
153
|
-
|
|
165
|
+
export default class TableConfigurator<LANG_IDS = {
|
|
166
|
+
en: 1;
|
|
167
|
+
}> {
|
|
168
|
+
config?: TableConfig<LANG_IDS>;
|
|
154
169
|
get dbo(): DBHandlerServer;
|
|
155
170
|
get db(): DB;
|
|
156
171
|
prostgles: Prostgles;
|
|
157
172
|
constructor(prostgles: Prostgles);
|
|
158
173
|
getColumnConfig: (tableName: string, colName: string) => ColumnConfig | undefined;
|
|
174
|
+
getTableInfo: (params: {
|
|
175
|
+
tableName: string;
|
|
176
|
+
lang?: string;
|
|
177
|
+
}) => TableInfo["info"] | undefined;
|
|
159
178
|
getColInfo: (params: {
|
|
160
179
|
col: string;
|
|
161
180
|
table: string;
|
package/lib/TableConfig.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableConfig.d.ts","sourceRoot":"","sources":["TableConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"TableConfig.d.ts","sourceRoot":"","sources":["TableConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAA6B,QAAQ,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7D,aAAK,YAAY,GAAG;IAClB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,oBAAY,WAAW,CAAC,QAAQ,IAAI;KACjC,OAAO,IAAI,MAAM,QAAQ,GAAG,MAAM;CACpC,CAAA;AAED,eAAO,MAAM,SAAS;;;;;kBAiBrB,CAAA;AAED,aAAK,mBAAmB,CAAC,QAAQ,GAAG,SAAS,IAAI;IAC/C,IAAI,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;KACxC,CAAA;IACD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAA;AAED,aAAK,qBAAqB,CAAC,QAAQ,IAAI;IACrC,aAAa,EAAE;QACb,MAAM,EAAE;YACN,CAAC,QAAQ,EAAE,MAAM,GAAG,EAAE,GAAG;iBACtB,OAAO,IAAI,MAAM,QAAQ,GAAG,MAAM;aACpC,CAAA;SACF,CAAA;KACF,CAAA;CACF,CAAA;AAED,aAAK,UAAU,CAAC,QAAQ,IAAI;IAC1B;;OAEG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IAEpB,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;SAAG,OAAO,IAAI,MAAM,QAAQ,GAAG,MAAM;KAAG,CAAC,CAAC;CACpE,CAAA;AAED,aAAK,YAAY,GAAG;IAElB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAA;AAED,aAAK,UAAU,GAAG;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAA;AAED,aAAK,UAAU,GAAG,UAAU,GAAG;IAC7B,MAAM,EAAE,IAAI,CAAC;IACb;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAA;AAED;;;GAGG;AACH,aAAK,WAAW,GAAG,CAAC;IAElB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC;CACvB,GAAG,CACA;IAEE;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;CAC/G,GACD;IACE,iBAAiB,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAA;CAC1D,CACF,CAAC,CAAC;AAEL,aAAK,gBAAgB,GAAG;IAEtB;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,GAAG;QAGxB,SAAS,EAAE,MAAM,CAAC;QAElB;;WAEG;QACH,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAA;CACF,CAAA;AAED,aAAK,OAAO,GAAG;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;CACxB,CAAA;AAED;;GAEG;AACH,aAAK,eAAe,GAAG;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,EAAE,CAAC;CACpB,CAAA;AAED,aAAK,YAAY,CAAC,QAAQ,GAAG;IAAE,EAAE,EAAE,CAAC,CAAA;CAAE,IAAI,eAAe,GAAG,WAAW,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,GAAG,gBAAgB,GAAG,UAAU,CAAC,CAAC,CAAA;AAEjJ,aAAK,eAAe,CAAC,QAAQ,IAAI;IAC/B,OAAO,CAAC,EAAE;QACR,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;KAC9C,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAAA;KAClC,CAAC;IAEF;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,OAAO,CAAC,EAAE;QACR,CAAC,UAAU,EAAE,MAAM,GAAG;YAEpB;;eAEG;YACH,OAAO,CAAC,EAAE,OAAO,CAAC;YAElB;;;eAGG;YACH,MAAM,CAAC,EAAE,OAAO,CAAC;YAEjB;;;;eAIG;YACH,YAAY,CAAC,EAAE,OAAO,CAAC;YAEvB;;eAEG;YAGH;;eAEG;YACH,UAAU,EAAE,MAAM,CAAC;YAEnB;;;eAGG;YACH,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAA;SAC1C,CAAA;KACF,CAAA;CACF,CAAA;AAED;;GAEG;AACH,oBAAY,WAAW,CAAC,QAAQ,GAAG;IAAE,EAAE,EAAE,CAAC,CAAA;CAAE,IAAI;IAC9C,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC;CACrH,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,iBAAiB,CAAC,QAAQ,GAAG;IAAE,EAAE,EAAE,CAAC,CAAA;CAAE;IAEzD,MAAM,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC/B,IAAI,GAAG,IAAI,eAAe,CAGzB;IACD,IAAI,EAAE,IAAI,EAAE,CAGX;IAED,SAAS,EAAE,SAAS,CAAA;gBAER,SAAS,EAAE,SAAS;IAKhC,eAAe,cAAe,MAAM,WAAW,MAAM,KAAG,YAAY,GAAG,SAAS,CAM/E;IAED,YAAY,WAAY;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAG,SAAS,CAAC,MAAM,CAAC,GAAG,SAAS,CAM3F;IAED,UAAU,WAAY;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAG,CAAC,YAAY,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,SAAS,CAiCpH;IAED,WAAW,WAAY;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,KAAG,IAAI,CAQvE;IAED,WAAW,gBAAiB,MAAM,eAAe,MAAM,KAAG,QAAQ,GAAG,SAAS,CA2B7E;IAEK,IAAI;CAyIX"}
|
package/lib/TableConfig.js
CHANGED
|
@@ -1,7 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseI18N = void 0;
|
|
3
4
|
const prostgles_types_1 = require("prostgles-types");
|
|
5
|
+
const DboBuilder_1 = require("./DboBuilder");
|
|
4
6
|
const PubSubManager_1 = require("./PubSubManager");
|
|
7
|
+
const parseI18N = (params) => {
|
|
8
|
+
const { config, lang, defaultLang, defaultValue } = params;
|
|
9
|
+
if (config) {
|
|
10
|
+
if ((0, DboBuilder_1.isPlainObject)(config)) {
|
|
11
|
+
//@ts-ignore
|
|
12
|
+
return config[lang] ?? config[defaultLang];
|
|
13
|
+
}
|
|
14
|
+
else if (typeof config === "string") {
|
|
15
|
+
return config;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return defaultValue;
|
|
19
|
+
};
|
|
20
|
+
exports.parseI18N = parseI18N;
|
|
5
21
|
/**
|
|
6
22
|
* Will be run between initSQL and fileTable
|
|
7
23
|
*/
|
|
@@ -10,10 +26,16 @@ class TableConfigurator {
|
|
|
10
26
|
this.getColumnConfig = (tableName, colName) => {
|
|
11
27
|
const tconf = this.config?.[tableName];
|
|
12
28
|
if (tconf && "columns" in tconf) {
|
|
13
|
-
return tconf.columns[colName];
|
|
29
|
+
return tconf.columns?.[colName];
|
|
14
30
|
}
|
|
15
31
|
return undefined;
|
|
16
32
|
};
|
|
33
|
+
this.getTableInfo = (params) => {
|
|
34
|
+
const tconf = this.config?.[params.tableName];
|
|
35
|
+
return {
|
|
36
|
+
label: (0, exports.parseI18N)({ config: tconf?.info?.label, lang: params.lang, defaultLang: "en", defaultValue: params.tableName })
|
|
37
|
+
};
|
|
38
|
+
};
|
|
17
39
|
this.getColInfo = (params) => {
|
|
18
40
|
const colConf = this.getColumnConfig(params.table, params.col);
|
|
19
41
|
let result = undefined;
|
|
@@ -61,7 +83,7 @@ class TableConfigurator {
|
|
|
61
83
|
this.config[sourceTable] &&
|
|
62
84
|
"columns" in this.config[sourceTable]) {
|
|
63
85
|
const td = this.config[sourceTable];
|
|
64
|
-
if ("columns" in td && td.columns[targetTable]) {
|
|
86
|
+
if ("columns" in td && td.columns?.[targetTable]) {
|
|
65
87
|
const cd = td.columns[targetTable];
|
|
66
88
|
if ("joinDef" in cd) {
|
|
67
89
|
const { joinDef } = cd;
|
|
@@ -167,29 +189,31 @@ class TableConfigurator {
|
|
|
167
189
|
}
|
|
168
190
|
};
|
|
169
191
|
const colDefs = [];
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
else if (!colDefs.length && !this.dbo[tableName].columns?.find(c => colName === c.name)) {
|
|
176
|
-
if ("references" in colConf && colConf.references) {
|
|
177
|
-
const { tableName: lookupTable, } = colConf.references;
|
|
178
|
-
queries.push(`
|
|
179
|
-
ALTER TABLE ${(0, prostgles_types_1.asName)(tableName)}
|
|
180
|
-
ADD COLUMN ${getColDef(colName, colConf)};
|
|
181
|
-
`);
|
|
182
|
-
console.log(`TableConfigurator: ${tableName}(${colName})` + " referenced lookup table " + lookupTable);
|
|
192
|
+
if (tableConf.columns) {
|
|
193
|
+
(0, prostgles_types_1.getKeys)(tableConf?.columns).filter(c => !("joinDef" in tableConf.columns[c])).map(colName => {
|
|
194
|
+
const colConf = tableConf.columns[colName];
|
|
195
|
+
if (!this.dbo[tableName]) {
|
|
196
|
+
colDefs.push(getColDef(colName, colConf));
|
|
183
197
|
}
|
|
184
|
-
else if (
|
|
185
|
-
|
|
198
|
+
else if (!colDefs.length && !this.dbo[tableName].columns?.find(c => colName === c.name)) {
|
|
199
|
+
if ("references" in colConf && colConf.references) {
|
|
200
|
+
const { tableName: lookupTable, } = colConf.references;
|
|
201
|
+
queries.push(`
|
|
202
|
+
ALTER TABLE ${(0, prostgles_types_1.asName)(tableName)}
|
|
203
|
+
ADD COLUMN ${getColDef(colName, colConf)};
|
|
204
|
+
`);
|
|
205
|
+
console.log(`TableConfigurator: ${tableName}(${colName})` + " referenced lookup table " + lookupTable);
|
|
206
|
+
}
|
|
207
|
+
else if ("sqlDefinition" in colConf && colConf.sqlDefinition) {
|
|
208
|
+
queries.push(`
|
|
186
209
|
ALTER TABLE ${(0, prostgles_types_1.asName)(tableName)}
|
|
187
210
|
ADD COLUMN ${getColDef(colName, colConf)};
|
|
188
211
|
`);
|
|
189
|
-
|
|
212
|
+
console.log(`TableConfigurator: created/added column ${tableName}(${colName}) ` + colConf.sqlDefinition);
|
|
213
|
+
}
|
|
190
214
|
}
|
|
191
|
-
}
|
|
192
|
-
}
|
|
215
|
+
});
|
|
216
|
+
}
|
|
193
217
|
if (colDefs.length) {
|
|
194
218
|
queries.push(`CREATE TABLE ${(0, prostgles_types_1.asName)(tableName)} (
|
|
195
219
|
${colDefs.join(", \n")}
|
|
@@ -198,8 +222,11 @@ class TableConfigurator {
|
|
|
198
222
|
}
|
|
199
223
|
}
|
|
200
224
|
if ("constraints" in tableConf && tableConf.constraints) {
|
|
225
|
+
const constraints = await getTableConstraings(this.db, tableName);
|
|
201
226
|
(0, prostgles_types_1.getKeys)(tableConf.constraints).map(constraintName => {
|
|
202
|
-
|
|
227
|
+
if (!constraints.some(c => c.conname === constraintName)) {
|
|
228
|
+
queries.push(`ALTER TABLE ${(0, prostgles_types_1.asName)(tableName)} ADD CONSTRAINT ${(0, prostgles_types_1.asName)(constraintName)} ${tableConf.constraints[constraintName]} ;`);
|
|
229
|
+
}
|
|
203
230
|
});
|
|
204
231
|
}
|
|
205
232
|
if ("indexes" in tableConf && tableConf.indexes) {
|
|
@@ -229,3 +256,15 @@ async function columnExists(args) {
|
|
|
229
256
|
LIMIT 1;
|
|
230
257
|
`))?.column_name);
|
|
231
258
|
}
|
|
259
|
+
function getTableConstraings(db, tableName) {
|
|
260
|
+
return db.any(`
|
|
261
|
+
SELECT con.*, pg_get_constraintdef(con.oid)
|
|
262
|
+
FROM pg_catalog.pg_constraint con
|
|
263
|
+
INNER JOIN pg_catalog.pg_class rel
|
|
264
|
+
ON rel.oid = con.conrelid
|
|
265
|
+
INNER JOIN pg_catalog.pg_namespace nsp
|
|
266
|
+
ON nsp.oid = connamespace
|
|
267
|
+
WHERE 1=1
|
|
268
|
+
AND nsp.nspname = current_schema
|
|
269
|
+
AND rel.relname = ` + "${tableName}", { tableName });
|
|
270
|
+
}
|