prostgles-server 4.2.47 → 4.2.49

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 (64) hide show
  1. package/dist/DboBuilder/QueryBuilder/getJoinQuery.d.ts +1 -2
  2. package/dist/DboBuilder/QueryBuilder/getJoinQuery.d.ts.map +1 -1
  3. package/dist/DboBuilder/QueryBuilder/getJoinQuery.js +9 -13
  4. package/dist/DboBuilder/QueryBuilder/getJoinQuery.js.map +1 -1
  5. package/dist/DboBuilder/QueryBuilder/getNewQuery.d.ts +75 -69
  6. package/dist/DboBuilder/QueryBuilder/getNewQuery.d.ts.map +1 -1
  7. package/dist/DboBuilder/QueryBuilder/getNewQuery.js +39 -11
  8. package/dist/DboBuilder/QueryBuilder/getNewQuery.js.map +1 -1
  9. package/dist/DboBuilder/QueryBuilder/getSelectQuery.d.ts.map +1 -1
  10. package/dist/DboBuilder/QueryBuilder/getSelectQuery.js +0 -1
  11. package/dist/DboBuilder/QueryBuilder/getSelectQuery.js.map +1 -1
  12. package/dist/DboBuilder/QueryBuilder/prepareHaving.js +2 -2
  13. package/dist/DboBuilder/QueryBuilder/prepareHaving.js.map +1 -1
  14. package/dist/DboBuilder/TableHandler/delete.js +1 -1
  15. package/dist/DboBuilder/TableHandler/delete.js.map +1 -1
  16. package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts +4 -6
  17. package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts.map +1 -1
  18. package/dist/DboBuilder/ViewHandler/ViewHandler.js +7 -76
  19. package/dist/DboBuilder/ViewHandler/ViewHandler.js.map +1 -1
  20. package/dist/DboBuilder/ViewHandler/count.d.ts +6 -0
  21. package/dist/DboBuilder/ViewHandler/count.d.ts.map +1 -0
  22. package/dist/DboBuilder/ViewHandler/count.js +28 -0
  23. package/dist/DboBuilder/ViewHandler/count.js.map +1 -0
  24. package/dist/DboBuilder/ViewHandler/find.d.ts +18 -0
  25. package/dist/DboBuilder/ViewHandler/find.d.ts.map +1 -0
  26. package/dist/DboBuilder/ViewHandler/find.js +121 -0
  27. package/dist/DboBuilder/ViewHandler/find.js.map +1 -0
  28. package/dist/DboBuilder/ViewHandler/size.d.ts +6 -0
  29. package/dist/DboBuilder/ViewHandler/size.d.ts.map +1 -0
  30. package/dist/DboBuilder/ViewHandler/size.js +28 -0
  31. package/dist/DboBuilder/ViewHandler/size.js.map +1 -0
  32. package/dist/DboBuilder/ViewHandler/subscribe.d.ts +20 -0
  33. package/dist/DboBuilder/ViewHandler/subscribe.d.ts.map +1 -0
  34. package/dist/DboBuilder/ViewHandler/subscribe.js +96 -0
  35. package/dist/DboBuilder/ViewHandler/subscribe.js.map +1 -0
  36. package/dist/DboBuilder/subscribe.d.ts +3 -3
  37. package/dist/PubSubManager/PubSubManager.d.ts +1 -1
  38. package/dist/PubSubManager/PubSubManager.d.ts.map +1 -1
  39. package/dist/PubSubManager/PubSubManager.js +1 -1
  40. package/dist/PubSubManager/PubSubManager.js.map +1 -1
  41. package/dist/PubSubManager/pushSubData.js +1 -1
  42. package/dist/PubSubManager/pushSubData.js.map +1 -1
  43. package/lib/DboBuilder/QueryBuilder/getJoinQuery.ts +11 -17
  44. package/lib/DboBuilder/QueryBuilder/getNewQuery.ts +56 -15
  45. package/lib/DboBuilder/QueryBuilder/getSelectQuery.ts +0 -1
  46. package/lib/DboBuilder/QueryBuilder/prepareHaving.ts +2 -2
  47. package/lib/DboBuilder/TableHandler/delete.ts +1 -1
  48. package/lib/DboBuilder/ViewHandler/ViewHandler.ts +15 -110
  49. package/lib/DboBuilder/ViewHandler/count.ts +32 -0
  50. package/lib/DboBuilder/{find.ts → ViewHandler/find.ts} +8 -8
  51. package/lib/DboBuilder/ViewHandler/size.ts +35 -0
  52. package/lib/DboBuilder/{subscribe.ts → ViewHandler/subscribe.ts} +5 -5
  53. package/lib/PubSubManager/PubSubManager.ts +1 -1
  54. package/lib/PubSubManager/pushSubData.ts +1 -1
  55. package/package.json +2 -2
  56. package/tests/client/package-lock.json +2442 -8
  57. package/tests/client/package.json +1 -1
  58. package/tests/isomorphicQueries.spec.ts +47 -10
  59. package/tests/server/package-lock.json +3 -3
  60. package/tests/manual_test/index.html +0 -74
  61. package/tests/manual_test/index.ts +0 -72
  62. package/tests/manual_test/init.sql +0 -88
  63. package/tests/manual_test/package.json +0 -30
  64. package/tests/manual_test/tsconfig.json +0 -21
@@ -13,7 +13,7 @@
13
13
  "license": "ISC",
14
14
  "dependencies": {
15
15
  "@types/node": "^20.9.2",
16
- "prostgles-client": "^4.0.117",
16
+ "prostgles-client": "^4.0.118",
17
17
  "prostgles-types": "^4.0.51",
18
18
  "socket.io-client": "^4.7.5"
19
19
  },
@@ -15,7 +15,7 @@ export const isomorphicQueries = async (db: DBOFullyTyped | DBHandlerClient, log
15
15
  const isServer = !!(db.items as any).dboBuilder;
16
16
  await describe("Isomorphic queries", async () => {
17
17
  await test("Deleting stale data", async () => {
18
- const itemsCount = await db.items.count!()
18
+ const itemsCount = await db.items.count?.()
19
19
  if(itemsCount){
20
20
  log("DELETING items");
21
21
 
@@ -27,8 +27,7 @@ export const isomorphicQueries = async (db: DBOFullyTyped | DBHandlerClient, log
27
27
  await db.items2.delete!({ });
28
28
  await db.items.delete!({ });
29
29
  }
30
- await db.sql!(`TRUNCATE items RESTART IDENTITY CASCADE;`)
31
-
30
+ await db.sql!(`TRUNCATE items RESTART IDENTITY CASCADE;`);
32
31
  });
33
32
 
34
33
  await test("Insert error structure", async () => {
@@ -83,13 +82,6 @@ export const isomorphicQueries = async (db: DBOFullyTyped | DBHandlerClient, log
83
82
  await db.sql("TRUNCATE files CASCADE");
84
83
  });
85
84
 
86
- await test("Having clause", async () => {
87
- const res = await db.items.find!({}, { select: { name: 1, c: { $countAll: [] } }, having: { c: 2 } });
88
- assert.deepStrictEqual(res, [{
89
- c: '2',
90
- name: 'a'
91
- }]);
92
- })
93
85
 
94
86
  const json = { a: true, arr: "2", arr1: 3, arr2: [1], arrStr: ["1123.string"] }
95
87
  await test("merge json", async () => {
@@ -1192,6 +1184,51 @@ export const isomorphicQueries = async (db: DBOFullyTyped | DBHandlerClient, log
1192
1184
  });
1193
1185
  });
1194
1186
  });
1187
+
1188
+ await test("Having clause", async () => {
1189
+ // await db.items.insert!([{ name: "a" }, { name: "a" }]);
1190
+ const res = await db.items.find!(
1191
+ {},
1192
+ {
1193
+ select: { name: 1, c: { $countAll: [] }
1194
+ },
1195
+ having: {
1196
+ c: 4,
1197
+ }
1198
+ });
1199
+ assert.deepStrictEqual(res, [{
1200
+ c: '4',
1201
+ name: 'multi'
1202
+ }]);
1203
+ });
1204
+ await test("Nested join having clause", async () => {
1205
+ const res = await db.items.find!(
1206
+ {},
1207
+ {
1208
+ select: {
1209
+ name: 1,
1210
+ itms2: {
1211
+ $innerJoin: "items2",
1212
+ select: {
1213
+ name: 1,
1214
+ c: { $countAll: [] }
1215
+ },
1216
+ having: { c: 1 }
1217
+ },
1218
+ },
1219
+ }
1220
+ );
1221
+ assert.deepStrictEqual(res, [
1222
+ {
1223
+ name: 'a',
1224
+ itms2: [{ c: 1, name: 'a' }],
1225
+ },
1226
+ {
1227
+ name: 'a',
1228
+ itms2: [{ c: 1, name: 'a' }],
1229
+ }
1230
+ ]);
1231
+ });
1195
1232
 
1196
1233
  }
1197
1234
 
@@ -21,7 +21,7 @@
21
21
  },
22
22
  "../..": {
23
23
  "name": "prostgles-server",
24
- "version": "4.2.46",
24
+ "version": "4.2.48",
25
25
  "license": "MIT",
26
26
  "dependencies": {
27
27
  "bluebird": "^3.7.2",
@@ -32,7 +32,7 @@
32
32
  "pg-cursor": "^2.10.5",
33
33
  "pg-promise": "^11.6.0",
34
34
  "prostgles-client": "^4.0.53",
35
- "prostgles-types": "^4.0.75"
35
+ "prostgles-types": "^4.0.76"
36
36
  },
37
37
  "devDependencies": {
38
38
  "@types/bluebird": "^3.5.36",
@@ -1548,7 +1548,7 @@
1548
1548
  "pg-cursor": "^2.10.5",
1549
1549
  "pg-promise": "^11.6.0",
1550
1550
  "prostgles-client": "^4.0.53",
1551
- "prostgles-types": "^4.0.75",
1551
+ "prostgles-types": "^4.0.76",
1552
1552
  "typescript": "^5.3.3"
1553
1553
  }
1554
1554
  },
@@ -1,74 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title> Prostgles </title>
5
- <meta name="viewport" content="width=device-width, initial-scale=1">
6
- <!-- <script src="https://unpkg.com/socket.io-client@2.3.1/dist/socket.io.slim.js" type="text/javascript"></script> -->
7
-
8
- <script src="https://unpkg.com/socket.io-client@latest/dist/socket.io.min.js" type="text/javascript"></script>
9
- <script src="https://unpkg.com/prostgles-client@latest/dist/index.js" type="text/javascript"></script>
10
- </head>
11
- <body>
12
-
13
- <div style="display: flex; flex-direction: row;">
14
- <div class="d1"></div>
15
- <div class="d2"></div>
16
- <div class="d3"></div>
17
- </div>
18
- <script defer>
19
-
20
- console.time("test")
21
- // const ws = new WebSocket('wss://prostgles.com/teztz/s');
22
- // ws.onopen = (ev => {
23
- // const c = function(){ return 2 }
24
- // ws.send({ c })
25
- // // ws.send(new File(["foo"], "foo.txt", {
26
- // // type: "text/plain",
27
- // // }))
28
- // })
29
- const log = console.log;
30
-
31
-
32
- const socket = io("/", { path: "/s", reconnect: true });
33
-
34
- prostgles({
35
- socket,
36
- onReconnect: (socket) => {
37
- console.log(1111);
38
- if(document.body.querySelector(".d3")){
39
- document.body.querySelector(".d3").innerText += `Reconnected ${new Date()} \n`
40
- }
41
- // window.location.reload();
42
- },
43
- onReady: async (db, methods) => {
44
- console.log("onReady")
45
- try {
46
- window.db = db;
47
- window.dbo = db;
48
- window.s = socket;
49
-
50
- const d1 = document.body.querySelector(".d1"),
51
- d2 = document.body.querySelector(".d2"),
52
- d3 = document.body.querySelector(".d3");
53
-
54
- // db.various.subscribe({ $and: [] }, {}, d => {
55
- // if(d1) d1.innerText = JSON.stringify(d, null, 2)
56
- // })
57
- // db.various.subscribe({ "id.<": 75648356348 }, {}, d => {
58
- // if(d2) d2.innerText = JSON.stringify(d, null, 2)
59
- // })
60
- d1.style.whiteSpace = "pre"
61
- d1.innerText = JSON.stringify({
62
- items: await db.items.find(),
63
- items2: await db.items2.find(),
64
- items4a: await db.items4a.find(),
65
- }, null, 2)
66
-
67
- } catch(e) {
68
- console.error(e)
69
- }
70
- }
71
- });
72
- </script>
73
- </body>
74
- </html>
@@ -1,72 +0,0 @@
1
-
2
- import path from 'path';
3
- import express from 'express';
4
- import prostgles from "prostgles-server";
5
-
6
- process.on('unhandledRejection', (reason, p) => {
7
- console.trace('Unhandled Rejection at:', p, 'reason:', reason)
8
- process.exit(1)
9
- });
10
-
11
- const app = express();
12
- app.use(express.json());
13
- app.use(express.urlencoded({ extended: true }));
14
- import _http from "http";
15
- const http = _http.createServer(app);
16
- const io = require("socket.io")(http, {
17
- path: "/s"
18
- });
19
- const port = process.env.NPORT || 3004;
20
- console.log("App listening on port: ", port)
21
- http.listen(port);
22
-
23
-
24
- prostgles({
25
- dbConnection: {
26
- host: process.env.POSTGRES_HOST || "localhost",
27
- port: +process.env.POSTGRES_PORT || 5432,
28
- database: process.env.POSTGRES_DB || "postgres",
29
- user: process.env.POSTGRES_USER || "api",
30
- password: process.env.POSTGRES_PASSWORD || "api",
31
- application_name: "manual_test" + Date.now()
32
- },
33
- io,
34
- tsGeneratedTypesDir: path.join(__dirname + '/'),
35
- watchSchema: s => {
36
- // console.log(s.command)
37
- },// "hotReloadMode",
38
- sqlFilePath: path.join(__dirname+'/init.sql'),
39
- // transactions: true,
40
- joins: "inferred",
41
- publishRawSQL: async (params) => {
42
- // log("set auth logic")
43
- return true
44
- },
45
- publish: async (params) => {
46
-
47
- return "*" as "*"
48
-
49
- },
50
- onReady: async (db) => {
51
- app.get('*', function(req, res){
52
- console.log(req.originalUrl)
53
- res.sendFile(path.join(__dirname+'/index.html'));
54
- });
55
-
56
-
57
- const nestedRow = { name: "nested_insert" };
58
- const parentRow = { name: "parent insert" }
59
- // await db.items3.insert({ items_id: nestedRow, items2_id: nestedRow, ...parentRow });
60
-
61
- console.log({
62
- items: await db.items.find(),
63
- items_multi: await db.items_multi.find(),
64
- })
65
- // await _db.any("CREATE TABLE IF NOT EXISTS ttt(id INTEGER, t TEXT)");
66
-
67
- // console.log(await db.various.find({ "id.<": 1423 }) )
68
- // db.various.subscribe({ "id.<": 1423 }, {}, console.log)
69
- // console.log(await db.lookup_status.getJoinedTables())
70
- },
71
- });
72
-
@@ -1,88 +0,0 @@
1
-
2
-
3
- DROP TABLE IF EXISTS various CASCADE;
4
- CREATE TABLE IF NOT EXISTS various (
5
- id SERIAL PRIMARY KEY,
6
- h TEXT[],
7
- name TEXT,
8
- tsv TSVECTOR,
9
- jsn JSON DEFAULT '{}'::JSON,
10
- added TIMESTAMP DEFAULT NOW()
11
- );
12
-
13
- DROP TABLE IF EXISTS items CASCADE;
14
- CREATE TABLE IF NOT EXISTS items (
15
- id SERIAL PRIMARY KEY,
16
- h TEXT[],
17
- name TEXT
18
- -- PRIMARY KEY(id, id1)
19
- );
20
-
21
- DROP TABLE IF EXISTS items2 CASCADE;
22
- CREATE TABLE IF NOT EXISTS items2 (
23
- id SERIAL PRIMARY KEY,
24
- items_id INTEGER REFERENCES items(id),
25
- hh TEXT[],
26
- name TEXT
27
- );
28
-
29
- DROP TABLE IF EXISTS items3 CASCADE;
30
- CREATE TABLE IF NOT EXISTS items3 (
31
- id SERIAL PRIMARY KEY,
32
- items_id INTEGER REFERENCES items(id),
33
- items2_id INTEGER REFERENCES items2(id),
34
- hh TEXT[],
35
- name TEXT
36
- );
37
-
38
- DROP TABLE IF EXISTS items4a CASCADE;
39
- CREATE TABLE IF NOT EXISTS items4a (
40
- id SERIAL PRIMARY KEY,
41
- items_id INTEGER REFERENCES items(id),
42
- items2_id INTEGER REFERENCES items2(id),
43
- name TEXT
44
- );
45
-
46
- DROP TABLE IF EXISTS items_multi CASCADE;
47
- CREATE TABLE IF NOT EXISTS items_multi (
48
- id SERIAL PRIMARY KEY,
49
- items0_id INTEGER REFERENCES items(id),
50
- items1_id INTEGER REFERENCES items(id),
51
- items2_id INTEGER REFERENCES items(id),
52
- items3_id INTEGER REFERENCES items(id),
53
- name TEXT
54
- );
55
-
56
- DROP TABLE IF EXISTS item_children CASCADE;
57
- CREATE TABLE IF NOT EXISTS item_children (
58
- id SERIAL PRIMARY KEY,
59
- item_id INTEGER REFERENCES items(id),
60
- name TEXT,
61
- tst TIMESTAMP DEFAULT NOW()
62
- );
63
-
64
- INSERT INTO item_children(name) VALUES ('a'), ('b'),('a'), ('b'),('a'), ('b'),('a'), ('b'), ('c');
65
-
66
-
67
-
68
-
69
- DROP TABLE IF EXISTS lookup_status CASCADE ;
70
- CREATE TABLE lookup_status(
71
- id text PRIMARY KEY,
72
- en text,
73
- fr text,
74
- UNIQUE (id, en)
75
- );
76
- INSERT INTO lookup_status(id)
77
- VALUES('approved'), ('pending'), ('1approved'), ('1pending'),('2approved'), ('2pending'),('3approved'), ('3pending'),('4approved'), ('4pending'),('5approved'), ('5pending');
78
-
79
- DROP TABLE IF EXISTS usr CASCADE ; -- SELECT * FROM usr
80
- CREATE TABLE usr(
81
- id SERIAL PRIMARY KEY,
82
- status text REFERENCES lookup_status(id),
83
- msg text,
84
- added TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
85
- is_active BOOLEAN,
86
- age NUMERIC
87
- );
88
- INSERT INTO usr(status, msg) VALUES('approved', 'hehe'), ('pending', 'haha'), ('pending', null);
@@ -1,30 +0,0 @@
1
- {
2
- "name": "config_test",
3
- "version": "1.0.0",
4
- "description": "",
5
- "main": "index.js",
6
- "scripts": {
7
- "build": "npm i && tsc",
8
- "run": "npm run build && node index.js",
9
- "start": "tsc-watch --onSuccess \"node --inspect index.js\""
10
- },
11
- "author": "",
12
- "license": "ISC",
13
- "dependencies": {
14
- "@types/express": "latest",
15
- "@types/ws": "latest",
16
- "chokidar": "latest",
17
- "express": "latest",
18
- "prostgles-client": "latest",
19
- "prostgles-server": "file:../..",
20
- "prostgles-types": "latest",
21
- "socket.io": "latest",
22
- "socket.io-client": "latest",
23
- "ws": "latest"
24
- },
25
- "devDependencies": {
26
- "@types/node": "latest",
27
- "tsc-watch": "^5.0.3",
28
- "typescript": "latest"
29
- }
30
- }
@@ -1,21 +0,0 @@
1
- {
2
- "files": ["./index.ts"],
3
- "compilerOptions": {
4
- "target": "es2020",
5
- "lib": [ "es2020" ],
6
- "esModuleInterop" : true,
7
- "allowSyntheticDefaultImports": true,
8
- "resolveJsonModule": true,
9
- "allowJs": true,
10
- "module": "commonjs",
11
- "moduleResolution": "node",
12
- "declaration": true,
13
- "declarationMap": true,
14
- "keyofStringsOnly": true,
15
- "skipLibCheck": true
16
- },
17
- "exclude": [
18
- "dist",
19
- "DBoGenerated.ts"
20
- ]
21
- }