prostgles-server 2.0.35 → 2.0.39

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.
Files changed (31) hide show
  1. package/dist/DboBuilder.d.ts.map +1 -1
  2. package/dist/DboBuilder.js +3 -2
  3. package/dist/DboBuilder.js.map +1 -1
  4. package/dist/FileManager.js +2 -2
  5. package/dist/FileManager.js.map +1 -1
  6. package/dist/Prostgles.d.ts.map +1 -1
  7. package/dist/Prostgles.js +14 -2
  8. package/dist/Prostgles.js.map +1 -1
  9. package/dist/QueryBuilder.d.ts +5 -3
  10. package/dist/QueryBuilder.d.ts.map +1 -1
  11. package/dist/QueryBuilder.js +6 -3
  12. package/dist/QueryBuilder.js.map +1 -1
  13. package/dist/TableConfig.d.ts.map +1 -1
  14. package/dist/TableConfig.js +10 -5
  15. package/dist/TableConfig.js.map +1 -1
  16. package/lib/DboBuilder.ts +3 -2
  17. package/lib/FileManager.ts +2 -2
  18. package/lib/Prostgles.ts +13 -2
  19. package/lib/QueryBuilder.ts +13 -7
  20. package/lib/TableConfig.ts +11 -6
  21. package/package.json +1 -1
  22. package/tests/client/index.ts +1 -1
  23. package/tests/client/package-lock.json +15 -15
  24. package/tests/client/package.json +1 -1
  25. package/tests/client_only_queries.js +22 -0
  26. package/tests/client_only_queries.ts +25 -0
  27. package/tests/server/media/{12126216-b58a-4208-893b-53a84e210246.txt → 48fb78e1-8abd-4319-93d7-e297cc2f7bcf.txt} +0 -0
  28. package/tests/server/media/{21e8b340-0e8b-493f-b22f-ad552633ad62.txt → 511f1b8e-f1a3-483c-9f60-487c23e590f0.txt} +0 -0
  29. package/tests/server/media/{d41e6db5-b6c3-438d-ba3a-6f6f90d706f6.txt → 67768352-adbd-4709-8127-4597fdd21be8.txt} +0 -0
  30. package/tests/server/media/{ec3e2f4f-0870-4fc2-badc-f71f873dac47.txt → 6edbb1e0-b776-4cfc-9570-1d86c53fcc8d.txt} +0 -0
  31. package/tests/server/package-lock.json +1 -1
@@ -54,7 +54,7 @@ class TableConfigurator {
54
54
  }
55
55
  if ("isLookupTable" in tableConf && Object.keys((_a = tableConf.isLookupTable) === null || _a === void 0 ? void 0 : _a.values).length) {
56
56
  const rows = Object.keys((_b = tableConf.isLookupTable) === null || _b === void 0 ? void 0 : _b.values).map(id => { var _a; return (Object.assign({ id }, ((_a = tableConf.isLookupTable) === null || _a === void 0 ? void 0 : _a.values[id]))); });
57
- if (dropIfExists || !((_c = this.dbo) === null || _c === void 0 ? void 0 : _c[tableName])) {
57
+ if (dropIfExists || dropIfExistsCascade || !((_c = this.dbo) === null || _c === void 0 ? void 0 : _c[tableName])) {
58
58
  const keys = Object.keys(rows[0]).filter(k => k !== "id");
59
59
  queries.push(`CREATE TABLE IF NOT EXISTS ${tableName} (
60
60
  id TEXT PRIMARY KEY
@@ -64,12 +64,15 @@ class TableConfigurator {
64
64
  const values = this.prostgles.pgp.helpers.values(row);
65
65
  queries.push(this.prostgles.pgp.as.format(`INSERT INTO ${tableName} (${["id", ...keys].map(t => prostgles_types_1.asName(t)).join(", ")}) ` + " VALUES ${values:raw} ;", { values }));
66
66
  });
67
- console.log("Created lookup table " + tableName);
67
+ // console.log("Created lookup table " + tableName)
68
68
  }
69
69
  }
70
70
  });
71
71
  if (queries.length) {
72
- yield this.db.multi(queries.join("\n"));
72
+ const q = queries.join("\n");
73
+ console.log("TableConfig: \n", q);
74
+ yield this.db.multi(q);
75
+ yield this.prostgles.refreshDBO();
73
76
  }
74
77
  queries = [];
75
78
  /* Create referenced columns */
@@ -118,7 +121,9 @@ class TableConfigurator {
118
121
  }
119
122
  })));
120
123
  if (queries.length) {
121
- yield this.db.multi(queries.join("\n"));
124
+ const q = queries.join("\n");
125
+ console.log("TableConfig: \n", q);
126
+ yield this.db.multi(q);
122
127
  }
123
128
  });
124
129
  }
@@ -129,7 +134,7 @@ function columnExists(args) {
129
134
  return __awaiter(this, void 0, void 0, function* () {
130
135
  const { db, tableName, colName } = args;
131
136
  return Boolean((_a = (yield db.oneOrNone(`
132
- SELECT column_name
137
+ SELECT column_name, table_name
133
138
  FROM information_schema.columns
134
139
  WHERE table_name=${PubSubManager_1.asValue(tableName)} and column_name=${PubSubManager_1.asValue(colName)}
135
140
  LIMIT 1;
@@ -1 +1 @@
1
- {"version":3,"file":"TableConfig.js","sourceRoot":"","sources":["../lib/TableConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TableConfig.js","sourceRoot":"","sources":["../lib/TableConfig.ts"],"names":[],"mappings":"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"}
package/lib/DboBuilder.ts CHANGED
@@ -856,7 +856,7 @@ export class ViewHandler {
856
856
  if(maxLimit && !Number.isInteger(maxLimit)) throw ` invalid publish.${this.name}.select.maxLimit -> expecting integer but got ` + maxLimit;
857
857
  }
858
858
 
859
- let q = await getNewQuery(this as unknown as TableHandler, filter, selectParams, param3_unused, tableRules, localParams),
859
+ let q = await getNewQuery(this as unknown as TableHandler, filter, selectParams, param3_unused, tableRules, localParams, this.columns),
860
860
  _query = makeQuery(this as unknown as TableHandler, q, undefined, undefined, selectParams);
861
861
  // console.log(_query, JSON.stringify(q, null, 2))
862
862
  if(testRule){
@@ -2316,7 +2316,8 @@ export class TableHandler extends ViewHandler {
2316
2316
  allowedFields,
2317
2317
  computedFields: COMPUTED_FIELDS,
2318
2318
  functions: FUNCTIONS.filter(f => f.type === "function" && f.singleColArg),
2319
- isView: this.is_view
2319
+ isView: this.is_view,
2320
+ columns: this.columns,
2320
2321
  });
2321
2322
  await sBuilder.parseUserSelect(returning);
2322
2323
 
@@ -370,8 +370,8 @@ export default class FileManager {
370
370
  foreign_id ${pkField.udt_name} ${refType === "one"? " PRIMARY KEY " : ""} REFERENCES ${asName(refTable)}(${asName(pkField.name)}),
371
371
  media_id UUID NOT NULL REFERENCES ${asName(tableName)}(id)
372
372
  )
373
- `
374
- // console.log(`Creating ${action} ...`, lookupTableName);
373
+ `;
374
+ console.log(`Creating ${action} ...`, lookupTableName);
375
375
  await this.db.any(query);
376
376
  console.log(`Created ${action}`);
377
377
 
package/lib/Prostgles.ts CHANGED
@@ -615,7 +615,12 @@ export class Prostgles<DBO = DbHandler> {
615
615
  await this.refreshDBO();
616
616
  if(this.opts.tableConfig){
617
617
  this.tableConfigurator = new TableConfigurator(this as any);
618
- await this.tableConfigurator.init();
618
+ try {
619
+ await this.tableConfigurator.init();
620
+ } catch(e){
621
+ console.error("TableConfigurator: ",e);
622
+ throw e;
623
+ }
619
624
  }
620
625
 
621
626
  /* 3. Make DBO object from all tables and views */
@@ -627,7 +632,13 @@ export class Prostgles<DBO = DbHandler> {
627
632
  if(!awsS3Config && !localConfig) throw "fileTable missing param: Must provide awsS3Config OR localConfig";
628
633
  await this.refreshDBO();
629
634
  this.fileManager = new FileManager(awsS3Config || localConfig, imageOptions);
630
- await this.fileManager.init(this as any);
635
+
636
+ try {
637
+ await this.fileManager.init(this as any);
638
+ } catch(e){
639
+ console.error("FileManager: ",e);
640
+ throw e;
641
+ }
631
642
  }
632
643
  await this.refreshDBO();
633
644
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  import { pgp, Filter, LocalParams, isPlainObject, TableHandler, ViewHandler } from "./DboBuilder";
8
8
  import { TableRule, flat } from "./Prostgles";
9
- import { SelectParamsBasic as SelectParams, isEmpty, FieldFilter, asName, TextFilter_FullTextSearchFilterKeys, TS_PG_Types } from "prostgles-types";
9
+ import { SelectParamsBasic as SelectParams, isEmpty, FieldFilter, asName, TextFilter_FullTextSearchFilterKeys, TS_PG_Types, ColumnInfo } from "prostgles-types";
10
10
  import { get } from "./utils";
11
11
 
12
12
 
@@ -629,13 +629,15 @@ export class SelectItemBuilder {
629
629
  private functions: FunctionSpec[];
630
630
  private allowedFieldsIncludingComputed: string[];
631
631
  private isView: boolean;
632
+ private columns: ColumnInfo[];
632
633
 
633
- constructor(params: { allowedFields: string[]; computedFields: FieldSpec[]; functions: FunctionSpec[]; allFields: string[]; isView: boolean }){
634
+ constructor(params: { allowedFields: string[]; computedFields: FieldSpec[]; functions: FunctionSpec[]; allFields: string[]; isView: boolean; columns: ColumnInfo[]; }){
634
635
  this.allFields = params.allFields;
635
636
  this.allowedFields = params.allowedFields;
636
637
  this.computedFields = params.computedFields;
637
638
  this.isView = params.isView;
638
639
  this.functions = params.functions;
640
+ this.columns = params.columns;
639
641
  this.allowedFieldsIncludingComputed = this.allowedFields.concat(this.computedFields? this.computedFields.map(cf => cf.name) : []);
640
642
  if(!this.allowedFields.length){
641
643
  throw "allowedFields empty/missing";
@@ -716,9 +718,11 @@ export class SelectItemBuilder {
716
718
  }
717
719
  }
718
720
 
721
+ const colDef = this.columns.find(c => c.name === fieldName);
719
722
  let alias = selected? fieldName : ("not_selected_" + fieldName);
720
723
  this.addItem({
721
724
  type: "column",
725
+ columnPGDataType: colDef?.data_type,
722
726
  alias,
723
727
  getQuery: () => asName(fieldName),
724
728
  getFields: () => [fieldName],
@@ -830,10 +834,11 @@ export class SelectItemBuilder {
830
834
  export async function getNewQuery(
831
835
  _this: TableHandler,
832
836
  filter: Filter,
833
- selectParams?: SelectParams & { alias?: string },
837
+ selectParams: SelectParams & { alias?: string },
834
838
  param3_unused = null,
835
- tableRules?: TableRule,
836
- localParams?: LocalParams
839
+ tableRules: TableRule,
840
+ localParams: LocalParams,
841
+ columns: ColumnInfo[],
837
842
  ): Promise<NewQuery> {
838
843
 
839
844
  if((localParams?.socket || localParams?.httpReq) && !get(tableRules, "select.fields")){
@@ -866,7 +871,7 @@ export async function getNewQuery(
866
871
  // allFieldsIncludingComputed = allCols.concat(COMPUTED_FIELDS.map(c => c.name)),
867
872
  allowedFields = _this.parseFieldFilter(get(tableRules, "select.fields")) || _this.column_names.slice(0),
868
873
  // allowedFieldsIncludingComputed = _this.parseFieldFilter(get(tableRules, "select.fields"), true, allFieldsIncludingComputed) || allFieldsIncludingComputed,
869
- sBuilder = new SelectItemBuilder({ allowedFields, computedFields: COMPUTED_FIELDS, isView: _this.is_view, functions: FUNCTIONS, allFields: _this.column_names.slice(0) });
874
+ sBuilder = new SelectItemBuilder({ allowedFields, computedFields: COMPUTED_FIELDS, isView: _this.is_view, functions: FUNCTIONS, allFields: _this.column_names.slice(0), columns });
870
875
 
871
876
 
872
877
 
@@ -934,7 +939,8 @@ export async function getNewQuery(
934
939
  { ...j_selectParams, alias: j_alias },
935
940
  param3_unused,
936
941
  j_tableRules,
937
- localParams
942
+ localParams,
943
+ columns
938
944
  );
939
945
  joinQuery.isLeftJoin = j_isLeftJoin;
940
946
  joinQuery.tableAlias = j_alias;
@@ -119,7 +119,7 @@ export default class TableConfigurator {
119
119
  }
120
120
  if("isLookupTable" in tableConf && Object.keys(tableConf.isLookupTable?.values).length){
121
121
  const rows = Object.keys(tableConf.isLookupTable?.values).map(id => ({ id, ...(tableConf.isLookupTable?.values[id]) }));
122
- if(dropIfExists || !this.dbo?.[tableName]){
122
+ if(dropIfExists || dropIfExistsCascade || !this.dbo?.[tableName]){
123
123
  const keys = Object.keys(rows[0]).filter(k => k !== "id");
124
124
  queries.push(`CREATE TABLE IF NOT EXISTS ${tableName} (
125
125
  id TEXT PRIMARY KEY
@@ -130,13 +130,16 @@ export default class TableConfigurator {
130
130
  const values = this.prostgles.pgp.helpers.values(row)
131
131
  queries.push(this.prostgles.pgp.as.format(`INSERT INTO ${tableName} (${["id", ...keys].map(t => asName(t)).join(", ")}) ` + " VALUES ${values:raw} ;", { values} ))
132
132
  });
133
- console.log("Created lookup table " + tableName)
133
+ // console.log("Created lookup table " + tableName)
134
134
  }
135
135
  }
136
136
  });
137
137
 
138
- if(queries.length){
139
- await this.db.multi(queries.join("\n"));
138
+ if(queries.length){
139
+ const q = queries.join("\n");
140
+ console.log("TableConfig: \n", q)
141
+ await this.db.multi(q);
142
+ await this.prostgles.refreshDBO()
140
143
  }
141
144
  queries = [];
142
145
 
@@ -195,7 +198,9 @@ export default class TableConfigurator {
195
198
  }));
196
199
 
197
200
  if(queries.length){
198
- await this.db.multi(queries.join("\n"));
201
+ const q = queries.join("\n");
202
+ console.log("TableConfig: \n", q)
203
+ await this.db.multi(q);
199
204
  }
200
205
  }
201
206
  }
@@ -204,7 +209,7 @@ export default class TableConfigurator {
204
209
  async function columnExists(args: {tableName: string; colName: string; db: DB }){
205
210
  const { db, tableName, colName } = args;
206
211
  return Boolean((await db.oneOrNone(`
207
- SELECT column_name
212
+ SELECT column_name, table_name
208
213
  FROM information_schema.columns
209
214
  WHERE table_name=${asValue(tableName)} and column_name=${asValue(colName)}
210
215
  LIMIT 1;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prostgles-server",
3
- "version": "2.0.35",
3
+ "version": "2.0.39",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -3,7 +3,7 @@ import io from "socket.io-client";
3
3
 
4
4
  import isomorphic from "../isomorphic_queries";
5
5
  import client_only from "../client_only_queries";
6
- export { DBHandlerClient, SQLResult, Auth } from "prostgles-client/dist/prostgles";
6
+ export { DBHandlerClient, Auth } from "prostgles-client/dist/prostgles";
7
7
 
8
8
  const start = Date.now();
9
9
  const log = (msg: string, extra?: any) => {
@@ -11,7 +11,7 @@
11
11
  "dependencies": {
12
12
  "@types/node": "^14.14.16",
13
13
  "@types/socket.io-client": "^1.4.35",
14
- "prostgles-client": "^1.5.105",
14
+ "prostgles-client": "^1.5.110",
15
15
  "prostgles-types": "^1.5.68",
16
16
  "socket.io-client": "^4.2.0"
17
17
  }
@@ -114,17 +114,17 @@
114
114
  "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow=="
115
115
  },
116
116
  "node_modules/prostgles-client": {
117
- "version": "1.5.106",
118
- "resolved": "https://registry.npmjs.org/prostgles-client/-/prostgles-client-1.5.106.tgz",
119
- "integrity": "sha512-hCeL9E2bfu9pquiwfi0nAuOEvoSzUYHjYAOEcG+rWWv+LzaL3PCM9T6J4mzxUuLHnyVDET8/UWhxp9uVbgXo0w==",
117
+ "version": "1.5.110",
118
+ "resolved": "https://registry.npmjs.org/prostgles-client/-/prostgles-client-1.5.110.tgz",
119
+ "integrity": "sha512-7++MFe/D2202w/HN5zzvDDZCbIgZN1jqQ9J2lznJQI3nTyWA1QqbzYzN+Ny4txZvOXJwEWeetC1jLDDptDoz4A==",
120
120
  "dependencies": {
121
- "prostgles-types": "^1.5.96"
121
+ "prostgles-types": "^1.5.104"
122
122
  }
123
123
  },
124
124
  "node_modules/prostgles-types": {
125
- "version": "1.5.96",
126
- "resolved": "https://registry.npmjs.org/prostgles-types/-/prostgles-types-1.5.96.tgz",
127
- "integrity": "sha512-JQo4yBG2f+x/nhKQfnjcZGqQEXUdSCUL8ohdz4rrcoxDZf8aiBD0RSEAOfh8ar/70D5Vr9xhoKlnxA4zF/8oMA=="
125
+ "version": "1.5.104",
126
+ "resolved": "https://registry.npmjs.org/prostgles-types/-/prostgles-types-1.5.104.tgz",
127
+ "integrity": "sha512-PBgwJ+EraVZgBS7hn2KBkxlHVGhLDQB6ks8KABA6IwR5Kcmu9Hjx4stZa64xHa1ZUTbWe2OuNKZkIAXockXVrA=="
128
128
  },
129
129
  "node_modules/socket.io-client": {
130
130
  "version": "4.2.0",
@@ -275,17 +275,17 @@
275
275
  "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow=="
276
276
  },
277
277
  "prostgles-client": {
278
- "version": "1.5.106",
279
- "resolved": "https://registry.npmjs.org/prostgles-client/-/prostgles-client-1.5.106.tgz",
280
- "integrity": "sha512-hCeL9E2bfu9pquiwfi0nAuOEvoSzUYHjYAOEcG+rWWv+LzaL3PCM9T6J4mzxUuLHnyVDET8/UWhxp9uVbgXo0w==",
278
+ "version": "1.5.110",
279
+ "resolved": "https://registry.npmjs.org/prostgles-client/-/prostgles-client-1.5.110.tgz",
280
+ "integrity": "sha512-7++MFe/D2202w/HN5zzvDDZCbIgZN1jqQ9J2lznJQI3nTyWA1QqbzYzN+Ny4txZvOXJwEWeetC1jLDDptDoz4A==",
281
281
  "requires": {
282
- "prostgles-types": "^1.5.96"
282
+ "prostgles-types": "^1.5.104"
283
283
  }
284
284
  },
285
285
  "prostgles-types": {
286
- "version": "1.5.96",
287
- "resolved": "https://registry.npmjs.org/prostgles-types/-/prostgles-types-1.5.96.tgz",
288
- "integrity": "sha512-JQo4yBG2f+x/nhKQfnjcZGqQEXUdSCUL8ohdz4rrcoxDZf8aiBD0RSEAOfh8ar/70D5Vr9xhoKlnxA4zF/8oMA=="
286
+ "version": "1.5.104",
287
+ "resolved": "https://registry.npmjs.org/prostgles-types/-/prostgles-types-1.5.104.tgz",
288
+ "integrity": "sha512-PBgwJ+EraVZgBS7hn2KBkxlHVGhLDQB6ks8KABA6IwR5Kcmu9Hjx4stZa64xHa1ZUTbWe2OuNKZkIAXockXVrA=="
289
289
  },
290
290
  "socket.io-client": {
291
291
  "version": "4.2.0",
@@ -14,7 +14,7 @@
14
14
  "dependencies": {
15
15
  "@types/node": "^14.14.16",
16
16
  "@types/socket.io-client": "^1.4.35",
17
- "prostgles-client": "^1.5.105",
17
+ "prostgles-client": "^1.5.110",
18
18
  "prostgles-types": "^1.5.68",
19
19
  "socket.io-client": "^4.2.0"
20
20
  }
@@ -112,6 +112,28 @@ async function client_only(db, auth, log, methods) {
112
112
  { id: 2, public: 'public data' }
113
113
  ]);
114
114
  });
115
+ // await tryRun("Duplicate subscription", async () => {
116
+ // return new Promise(async (resolve, reject) => {
117
+ // let data1 = [], data2 = [], cntr = 0;
118
+ // function check(){
119
+ // cntr++;
120
+ // if(cntr === 2){
121
+ // assert.equal(data1.length, data2.length);
122
+ // console.error(data1, data2)
123
+ // reject( data1);
124
+ // resolve(data1)
125
+ // }
126
+ // }
127
+ // const sub1 = await db.planes.subscribe({}, {}, data => {
128
+ // data1 = data;
129
+ // check()
130
+ // });
131
+ // const sub2 = await db.planes.subscribe({}, {}, data => {
132
+ // data2 = data;
133
+ // check()
134
+ // });
135
+ // })
136
+ // })
115
137
  const cols = await db.insert_rules.getColumns();
116
138
  assert_1.strict.equal(cols.filter(({ insert, update: u, select: s, delete: d }) => insert && !u && !s && !d).length, 3, "Validated getColumns failed");
117
139
  /* Validated insert */
@@ -134,6 +134,31 @@ export default async function client_only(db: DBHandlerClient, auth: Auth, log:
134
134
  ]);
135
135
  });
136
136
 
137
+ // await tryRun("Duplicate subscription", async () => {
138
+
139
+ // return new Promise(async (resolve, reject) => {
140
+ // let data1 = [], data2 = [], cntr = 0;
141
+ // function check(){
142
+ // cntr++;
143
+ // if(cntr === 2){
144
+ // assert.equal(data1.length, data2.length);
145
+ // console.error(data1, data2)
146
+ // reject( data1);
147
+ // resolve(data1)
148
+ // }
149
+ // }
150
+
151
+ // const sub1 = await db.planes.subscribe({}, {}, data => {
152
+ // data1 = data;
153
+ // check()
154
+ // });
155
+ // const sub2 = await db.planes.subscribe({}, {}, data => {
156
+ // data2 = data;
157
+ // check()
158
+ // });
159
+ // })
160
+ // })
161
+
137
162
  const cols = await db.insert_rules.getColumns();
138
163
  assert.equal(cols.filter(({ insert, update: u, select: s, delete: d }) => insert && !u && !s && !d).length, 3, "Validated getColumns failed")
139
164
 
@@ -23,7 +23,7 @@
23
23
  },
24
24
  "../..": {
25
25
  "name": "prostgles-server",
26
- "version": "2.0.34",
26
+ "version": "2.0.38",
27
27
  "license": "MIT",
28
28
  "dependencies": {
29
29
  "@aws-sdk/client-s3": "^3.32.0",