prostgles-server 4.2.614 → 4.2.616

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 (86) hide show
  1. package/dist/DBSchemaBuilder/DBSchemaBuilder.d.ts +2 -2
  2. package/dist/DBSchemaBuilder/DBSchemaBuilder.d.ts.map +1 -1
  3. package/dist/DboBuilder/DboBuilder.d.ts +2 -0
  4. package/dist/DboBuilder/DboBuilder.d.ts.map +1 -1
  5. package/dist/DboBuilder/DboBuilder.js +17 -3
  6. package/dist/DboBuilder/DboBuilder.js.map +1 -1
  7. package/dist/DboBuilder/TableHandler/TableHandler.d.ts +5 -6
  8. package/dist/DboBuilder/TableHandler/TableHandler.d.ts.map +1 -1
  9. package/dist/DboBuilder/TableHandler/TableHandler.js +17 -7
  10. package/dist/DboBuilder/TableHandler/TableHandler.js.map +1 -1
  11. package/dist/DboBuilder/TableHandler/delete.d.ts.map +1 -1
  12. package/dist/DboBuilder/TableHandler/delete.js +1 -0
  13. package/dist/DboBuilder/TableHandler/delete.js.map +1 -1
  14. package/dist/DboBuilder/TableHandler/executeAfterHooksCheckAndPostValidation.d.ts.map +1 -1
  15. package/dist/DboBuilder/TableHandler/executeAfterHooksCheckAndPostValidation.js +1 -1
  16. package/dist/DboBuilder/TableHandler/executeAfterHooksCheckAndPostValidation.js.map +1 -1
  17. package/dist/DboBuilder/TableHandler/insert/insert.d.ts.map +1 -1
  18. package/dist/DboBuilder/TableHandler/insert/insert.js +16 -5
  19. package/dist/DboBuilder/TableHandler/insert/insert.js.map +1 -1
  20. package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.d.ts +3 -5
  21. package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.d.ts.map +1 -1
  22. package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.js +13 -26
  23. package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.js.map +1 -1
  24. package/dist/DboBuilder/TableHandler/update.d.ts.map +1 -1
  25. package/dist/DboBuilder/TableHandler/update.js +26 -11
  26. package/dist/DboBuilder/TableHandler/update.js.map +1 -1
  27. package/dist/DboBuilder/TableHandler/updateFile.d.ts +6 -2
  28. package/dist/DboBuilder/TableHandler/updateFile.d.ts.map +1 -1
  29. package/dist/DboBuilder/TableHandler/updateFile.js +27 -11
  30. package/dist/DboBuilder/TableHandler/updateFile.js.map +1 -1
  31. package/dist/DboBuilder/TableHandler/uploadFile.d.ts +3 -2
  32. package/dist/DboBuilder/TableHandler/uploadFile.d.ts.map +1 -1
  33. package/dist/DboBuilder/TableHandler/uploadFile.js +15 -4
  34. package/dist/DboBuilder/TableHandler/uploadFile.js.map +1 -1
  35. package/dist/Logging.d.ts +1 -1
  36. package/dist/Logging.d.ts.map +1 -1
  37. package/dist/PublishParser/publishTypesAndUtils.d.ts +12 -6
  38. package/dist/PublishParser/publishTypesAndUtils.d.ts.map +1 -1
  39. package/dist/PublishParser/publishTypesAndUtils.js.map +1 -1
  40. package/dist/StorageClient/deleteUnreferencedFile.d.ts +4 -0
  41. package/dist/StorageClient/deleteUnreferencedFile.d.ts.map +1 -0
  42. package/dist/StorageClient/deleteUnreferencedFile.js +15 -0
  43. package/dist/StorageClient/deleteUnreferencedFile.js.map +1 -0
  44. package/dist/StorageClient/getFileStorageKey.d.ts +4 -0
  45. package/dist/StorageClient/getFileStorageKey.d.ts.map +1 -0
  46. package/dist/StorageClient/getFileStorageKey.js +7 -0
  47. package/dist/StorageClient/getFileStorageKey.js.map +1 -0
  48. package/dist/StorageClient/getFileTableConfig.d.ts +1 -0
  49. package/dist/StorageClient/getFileTableConfig.d.ts.map +1 -1
  50. package/dist/StorageClient/getFileTableConfig.js +9 -4
  51. package/dist/StorageClient/getFileTableConfig.js.map +1 -1
  52. package/dist/StorageClient/getFileType.d.ts.map +1 -1
  53. package/dist/StorageClient/getFileType.js +8 -10
  54. package/dist/StorageClient/getFileType.js.map +1 -1
  55. package/dist/StorageClient/getLocalStorageClient.d.ts.map +1 -1
  56. package/dist/StorageClient/getLocalStorageClient.js +20 -37
  57. package/dist/StorageClient/getLocalStorageClient.js.map +1 -1
  58. package/dist/StorageClient/getValidatedFileType.d.ts.map +1 -1
  59. package/dist/StorageClient/getValidatedFileType.js +4 -2
  60. package/dist/StorageClient/getValidatedFileType.js.map +1 -1
  61. package/dist/StorageClient/setupFileServeHandler.d.ts.map +1 -1
  62. package/dist/StorageClient/setupFileServeHandler.js +11 -3
  63. package/dist/StorageClient/setupFileServeHandler.js.map +1 -1
  64. package/dist/TableHooks/TableHooks.d.ts +11 -4
  65. package/dist/TableHooks/TableHooks.d.ts.map +1 -1
  66. package/lib/DBSchemaBuilder/DBSchemaBuilder.ts +3 -2
  67. package/lib/DboBuilder/DboBuilder.ts +18 -3
  68. package/lib/DboBuilder/TableHandler/TableHandler.ts +19 -7
  69. package/lib/DboBuilder/TableHandler/delete.ts +1 -0
  70. package/lib/DboBuilder/TableHandler/executeAfterHooksCheckAndPostValidation.ts +1 -2
  71. package/lib/DboBuilder/TableHandler/insert/insert.ts +16 -6
  72. package/lib/DboBuilder/TableHandler/onDeleteFromFileTable.ts +17 -33
  73. package/lib/DboBuilder/TableHandler/update.ts +26 -12
  74. package/lib/DboBuilder/TableHandler/updateFile.ts +42 -19
  75. package/lib/DboBuilder/TableHandler/uploadFile.ts +32 -7
  76. package/lib/Logging.ts +1 -0
  77. package/lib/PublishParser/publishTypesAndUtils.ts +27 -16
  78. package/lib/StorageClient/deleteUnreferencedFile.ts +19 -0
  79. package/lib/StorageClient/getFileStorageKey.ts +5 -0
  80. package/lib/StorageClient/getFileTableConfig.ts +19 -5
  81. package/lib/StorageClient/getFileType.ts +11 -14
  82. package/lib/StorageClient/getLocalStorageClient.ts +20 -43
  83. package/lib/StorageClient/getValidatedFileType.ts +4 -1
  84. package/lib/StorageClient/setupFileServeHandler.ts +11 -3
  85. package/lib/TableHooks/TableHooks.ts +24 -14
  86. package/package.json +2 -2
@@ -4,6 +4,7 @@ import type { TableRowFromColumnDefinitions } from "../TableConfig/TableRowFromC
4
4
  import type { TableHooks } from "../TableHooks/TableHooks";
5
5
  declare const FILE_TABLE_COLUMN_DEFINITIONS: {
6
6
  readonly id: "UUID PRIMARY KEY DEFAULT gen_random_uuid()";
7
+ readonly storage_key: "UUID UNIQUE";
7
8
  readonly extension: "TEXT NOT NULL DEFAULT ''";
8
9
  readonly content_type: "TEXT NOT NULL DEFAULT ''";
9
10
  readonly content_length: "BIGINT NOT NULL DEFAULT 0";
@@ -1 +1 @@
1
- {"version":3,"file":"getFileTableConfig.d.ts","sourceRoot":"","sources":["../../lib/StorageClient/getFileTableConfig.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAClG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAG3D,QAAA,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;CAkBzB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,6BAA6B,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAE/F,eAAO,MAAM,kBAAkB,GAC7B,KAAK,SAAS,KACb;IAAE,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,SAAS,CAAA;CA6HvF,CAAC"}
1
+ {"version":3,"file":"getFileTableConfig.d.ts","sourceRoot":"","sources":["../../lib/StorageClient/getFileTableConfig.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAClG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAI3D,QAAA,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;CAmBzB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,6BAA6B,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAE/F,eAAO,MAAM,kBAAkB,GAC7B,KAAK,SAAS,KACb;IAAE,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,SAAS,CAAA;CAyIvF,CAAC"}
@@ -8,6 +8,7 @@ const uploadFile_1 = require("../DboBuilder/TableHandler/uploadFile");
8
8
  const setupFileServeHandler_1 = require("./setupFileServeHandler");
9
9
  const FILE_TABLE_COLUMN_DEFINITIONS = {
10
10
  id: `UUID PRIMARY KEY DEFAULT gen_random_uuid()`,
11
+ storage_key: `UUID UNIQUE`, // NULL for legacy objects stored under their file ID.
11
12
  extension: `TEXT NOT NULL DEFAULT ''`,
12
13
  content_type: `TEXT NOT NULL DEFAULT ''`,
13
14
  content_length: `BIGINT NOT NULL DEFAULT 0`,
@@ -77,8 +78,8 @@ const getFileTableConfig = (prg) => {
77
78
  insert: 1,
78
79
  update: 1,
79
80
  },
80
- validate: async ({ data: insertData, localParams, command, filter }) => {
81
- const tableHandler = prg.dboBuilder.dboMap.get(fileTableName);
81
+ validate: async ({ data: insertData, localParams, command, filter, dbx, onCommit, onRollback, }) => {
82
+ const tableHandler = dbx[fileTableName];
82
83
  if (!tableHandler)
83
84
  throw "Storage tableHandler not found";
84
85
  (0, uploadFile_1.assertFileObjectValid)(insertData);
@@ -86,6 +87,8 @@ const getFileTableConfig = (prg) => {
86
87
  const data = dataBlob;
87
88
  if (command === "update") {
88
89
  const { newData } = await (0, updateFile_1.updateFile)(tableHandler, fileTable, {
90
+ onCommit,
91
+ onRollback,
89
92
  filter: filter ?? {},
90
93
  localParams,
91
94
  data,
@@ -100,6 +103,8 @@ const getFileTableConfig = (prg) => {
100
103
  };
101
104
  }
102
105
  const media = await (0, uploadFile_1.uploadFile)(fileTable, {
106
+ onCommit,
107
+ onRollback,
103
108
  data,
104
109
  original_name,
105
110
  localParams,
@@ -116,9 +121,9 @@ const getFileTableConfig = (prg) => {
116
121
  },
117
122
  ...(userFileTableHooks?.beforeEach || []),
118
123
  ],
119
- onInsteadOfDelete: async ({ dbx, tx, returningQuery, isOneOrNone, filterOpts }) => {
124
+ onInsteadOfDelete: async ({ onCommit, tx, returningQuery, isOneOrNone, filterOpts }) => {
120
125
  return (0, onDeleteFromFileTable_1.onDeleteFromFileTable)(fileTable, {
121
- dbTX: dbx,
126
+ onCommit,
122
127
  t: tx,
123
128
  returningQuery,
124
129
  isOneOrNone,
@@ -1 +1 @@
1
- {"version":3,"file":"getFileTableConfig.js","sourceRoot":"","sources":["../../lib/StorageClient/getFileTableConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getFileTableConfig.js","sourceRoot":"","sources":["../../lib/StorageClient/getFileTableConfig.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"getFileType.d.ts","sourceRoot":"","sources":["../../lib/StorageClient/getFileType.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAG/E,eAAO,MAAM,WAAW,GACtB,MAAM,MAAM,GAAG,MAAM,EACrB,UAAU,MAAM,KACf,OAAO,CAAC;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,GAAG,EAAE,iBAAiB,CAAA;CAAE,CA0BhE,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,UAAU,MAAM,KACf;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,GAAG,EAAE,iBAAiB,CAAA;CAAE,GAAG,SAgB3D,CAAC"}
1
+ {"version":3,"file":"getFileType.d.ts","sourceRoot":"","sources":["../../lib/StorageClient/getFileType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAG/E,eAAO,MAAM,WAAW,GACtB,MAAM,MAAM,GAAG,MAAM,EACrB,UAAU,MAAM,KACf,OAAO,CAAC;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,GAAG,EAAE,iBAAiB,CAAA;CAAE,CA4BhE,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,UAAU,MAAM,KACf;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,GAAG,EAAE,iBAAiB,CAAA;CAAE,GAAG,SAgB3D,CAAC"}
@@ -1,6 +1,4 @@
1
1
  "use strict";
2
- // const fileType = require("file-type");
3
- // const res = await fileType.fromBuffer(typeof file === "string"? Buffer.from(file, 'utf8') : file);
4
2
  Object.defineProperty(exports, "__esModule", { value: true });
5
3
  exports.getFileTypeFromFilename = exports.getFileType = void 0;
6
4
  const prostgles_types_1 = require("prostgles-types");
@@ -9,21 +7,21 @@ const getFileType = async (file, fileName) => {
9
7
  const fileNameMime = (0, exports.getFileTypeFromFilename)(fileName);
10
8
  if (!fileNameMime?.ext)
11
9
  throw new Error("File name must contain extension");
12
- const res = await fileTypeFromBuffer(typeof file === "string" ? Buffer.from(file, "utf8") : file);
13
- if (!res) {
14
- /* Set correct/missing extension */
15
- const nameExt = fileNameMime.ext;
16
- if (["xml", "txt", "csv", "tsv", "svg", "sql"].includes(nameExt)) {
10
+ const detectedFileType = await fileTypeFromBuffer(typeof file === "string" ? Buffer.from(file, "utf8") : file);
11
+ if (!detectedFileType) {
12
+ // Text formats may not have a detectable binary signature.
13
+ const { mime } = fileNameMime;
14
+ if (mime.startsWith("text/") || mime.endsWith("+xml") || mime === "application/sql") {
17
15
  return fileNameMime;
18
16
  }
19
17
  throw new Error("Could not get the file type from file buffer");
20
18
  }
21
19
  else {
22
- if (fileNameMime.ext.toLowerCase() !== res.ext.toLowerCase()) {
23
- throw new Error(`There is a mismatch between file name extension and actual buffer extension: ${fileNameMime.ext} vs ${res.ext}`);
20
+ if (fileNameMime.ext.toLowerCase() !== detectedFileType.ext.toLowerCase()) {
21
+ throw new Error(`There is a mismatch between file name extension and actual buffer extension: ${fileNameMime.ext} vs ${detectedFileType.ext}`);
24
22
  }
25
23
  }
26
- return res;
24
+ return detectedFileType;
27
25
  };
28
26
  exports.getFileType = getFileType;
29
27
  const getFileTypeFromFilename = (fileName) => {
@@ -1 +1 @@
1
- {"version":3,"file":"getFileType.js","sourceRoot":"","sources":["../../lib/StorageClient/getFileType.ts"],"names":[],"mappings":";AAAA,yCAAyC;AACzC,qGAAqG;;;AAKrG,qDAA+D;AAExD,MAAM,WAAW,GAAG,KAAK,EAC9B,IAAqB,EACrB,QAAgB,EACiD,EAAE;IACnE,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAO,IAAI,CAAC,qBAAqB,CAG9D,CAAC;IAEH,MAAM,YAAY,GAAG,IAAA,+BAAuB,EAAC,QAAQ,CAAC,CAAC;IACvD,IAAI,CAAC,YAAY,EAAE,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC5E,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAElG,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,mCAAmC;QACnC,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC;QACjC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACjE,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;SAAM,CAAC;QACN,IAAI,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CACb,gFAAgF,YAAY,CAAC,GAAG,OAAO,GAAG,CAAC,GAAG,EAAE,CACjH,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,GAAU,CAAC;AACpB,CAAC,CAAC;AA7BW,QAAA,WAAW,eA6BtB;AAEK,MAAM,uBAAuB,GAAG,CACrC,QAAgB,EACoD,EAAE;IACtE,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEtC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAE3C,MAAM,OAAO,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,EAC7C,IAAI,GAAG,IAAA,yBAAO,EAAC,qCAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC5C,qCAAmB,CAAC,CAAC,CAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAChE,CAAC;IAEJ,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAE5B,OAAO;QACL,IAAI;QACJ,GAAG,EAAE,OAA4B;KAClC,CAAC;AACJ,CAAC,CAAC;AAlBW,QAAA,uBAAuB,2BAkBlC"}
1
+ {"version":3,"file":"getFileType.js","sourceRoot":"","sources":["../../lib/StorageClient/getFileType.ts"],"names":[],"mappings":";;;AACA,qDAA+D;AAExD,MAAM,WAAW,GAAG,KAAK,EAC9B,IAAqB,EACrB,QAAgB,EACiD,EAAE;IACnE,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAO,IAAI,CAAC,qBAAqB,CAG9D,CAAC;IAEH,MAAM,YAAY,GAAG,IAAA,+BAAuB,EAAC,QAAQ,CAAC,CAAC;IACvD,IAAI,CAAC,YAAY,EAAE,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC5E,MAAM,gBAAgB,GAAG,MAAM,kBAAkB,CAC/C,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAC5D,CAAC;IAEF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,2DAA2D;QAC3D,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC;QAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,KAAK,iBAAiB,EAAE,CAAC;YACpF,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;SAAM,CAAC;QACN,IAAI,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;YAC1E,MAAM,IAAI,KAAK,CACb,gFAAgF,YAAY,CAAC,GAAG,OAAO,gBAAgB,CAAC,GAAG,EAAE,CAC9H,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,gBAAuB,CAAC;AACjC,CAAC,CAAC;AA/BW,QAAA,WAAW,eA+BtB;AAEK,MAAM,uBAAuB,GAAG,CACrC,QAAgB,EACoD,EAAE;IACtE,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEtC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAE3C,MAAM,OAAO,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,EAC7C,IAAI,GAAG,IAAA,yBAAO,EAAC,qCAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC5C,qCAAmB,CAAC,CAAC,CAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAChE,CAAC;IAEJ,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAE5B,OAAO;QACL,IAAI;QACJ,GAAG,EAAE,OAA4B;KAClC,CAAC;AACJ,CAAC,CAAC;AAlBW,QAAA,uBAAuB,2BAkBlC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getLocalStorageClient.d.ts","sourceRoot":"","sources":["../../lib/StorageClient/getLocalStorageClient.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,kBAAkB,EAEnB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,WAAW,GAAG;IACxB;;;OAGG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,aAAa,WAAW,KAAG,kBAyGhE,CAAC"}
1
+ {"version":3,"file":"getLocalStorageClient.d.ts","sourceRoot":"","sources":["../../lib/StorageClient/getLocalStorageClient.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAEV,kBAAkB,EAEnB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,WAAW,GAAG;IACxB;;;OAGG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,aAAa,WAAW,KAAG,kBAiFhE,CAAC"}
@@ -8,6 +8,7 @@ const crypto_1 = __importDefault(require("crypto"));
8
8
  const fs_1 = __importDefault(require("fs"));
9
9
  const path_1 = __importDefault(require("path"));
10
10
  const stream_1 = __importDefault(require("stream"));
11
+ const promises_1 = require("stream/promises");
11
12
  const getLocalStorageClient = (localConfig) => {
12
13
  const { localFolderPath, minFreeBytes = 100 * 1024 * 1024 } = localConfig; // Default 100MB
13
14
  // Helper to ensure we have enough free disk space (Requires Node >= 18.17.0)
@@ -35,46 +36,28 @@ const getLocalStorageClient = (localConfig) => {
35
36
  const filePath = path_1.default.join(localFolderPath, args.fileName);
36
37
  const hash = crypto_1.default.createHash("md5");
37
38
  let contentLength = 0;
38
- return new Promise((resolve, reject) => {
39
- const writeStream = fs_1.default.createWriteStream(filePath);
40
- writeStream.on("error", reject);
41
- writeStream.on("finish", () => {
42
- resolve({
43
- type: "local",
44
- filePath,
45
- contentHash: hash.digest("hex"),
46
- contentLength: contentLength,
47
- });
48
- });
49
- if (typeof args.file === "string" || Buffer.isBuffer(args.file)) {
50
- const buffer = Buffer.isBuffer(args.file) ? args.file : Buffer.from(args.file);
51
- contentLength = buffer.length;
52
- hash.update(buffer);
53
- if (args.onProgress) {
39
+ const buffered = typeof args.file === "string" || Buffer.isBuffer(args.file);
40
+ const source = buffered ? stream_1.default.Readable.from([args.file]) : args.file;
41
+ let lastProgress = Date.now();
42
+ const measure = new stream_1.default.Transform({
43
+ transform: (chunk, _encoding, callback) => {
44
+ contentLength += chunk.length;
45
+ hash.update(chunk);
46
+ if (args.onProgress && (buffered || Date.now() - lastProgress > 1000)) {
47
+ lastProgress = Date.now();
54
48
  args.onProgress(contentLength);
55
49
  }
56
- writeStream.write(buffer);
57
- writeStream.end();
58
- }
59
- else if (args.file instanceof stream_1.default.Readable ||
60
- args.file instanceof stream_1.default.PassThrough) {
61
- let lastProgress = Date.now();
62
- const throttle = 1000; // 1 second
63
- args.file.on("data", (chunk) => {
64
- contentLength += chunk.length;
65
- hash.update(chunk);
66
- if (args.onProgress && Date.now() - lastProgress > throttle) {
67
- lastProgress = Date.now();
68
- args.onProgress(contentLength);
69
- }
70
- });
71
- args.file.on("error", reject);
72
- args.file.pipe(writeStream);
73
- }
74
- else {
75
- reject(new Error("Unsupported file type provided to upload."));
76
- }
50
+ callback(null, chunk);
51
+ },
77
52
  });
53
+ // Wait for all streams to close before transaction cleanup can remove a failed upload.
54
+ await (0, promises_1.pipeline)(source, measure, fs_1.default.createWriteStream(filePath));
55
+ return {
56
+ type: "local",
57
+ filePath,
58
+ contentHash: hash.digest("hex"),
59
+ contentLength,
60
+ };
78
61
  },
79
62
  downloadAsStream: async (name) => {
80
63
  const filePath = path_1.default.join(localFolderPath, name);
@@ -1 +1 @@
1
- {"version":3,"file":"getLocalStorageClient.js","sourceRoot":"","sources":["../../lib/StorageClient/getLocalStorageClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getLocalStorageClient.js","sourceRoot":"","sources":["../../lib/StorageClient/getLocalStorageClient.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"getValidatedFileType.d.ts","sourceRoot":"","sources":["../../lib/StorageClient/getValidatedFileType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAG5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,KAAK,IAAI,GAAG;IACV,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AACF,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,eAAe,EACvB,MAAM,IAAI,KACT,OAAO,CAAC;IACT,IAAI,EAAE,oBAAoB,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;CAIb,CAsEA,CAAC"}
1
+ {"version":3,"file":"getValidatedFileType.d.ts","sourceRoot":"","sources":["../../lib/StorageClient/getValidatedFileType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAG5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,KAAK,IAAI,GAAG;IACV,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AACF,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,eAAe,EACvB,MAAM,IAAI,KACT,OAAO,CAAC;IACT,IAAI,EAAE,oBAAoB,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;CAIb,CAyEA,CAAC"}
@@ -48,8 +48,10 @@ const getValidatedFileType = async (config, args) => {
48
48
  }
49
49
  }
50
50
  }
51
- if (!result?.mime)
52
- throw `File MIME type not found for the provided extension: ${result?.ext}`;
51
+ if (!result?.mime) {
52
+ const extension = fileName.includes(".") ? fileName.split(".").at(-1) : "(none)";
53
+ throw `File MIME type not found for the provided extension: ${extension}`;
54
+ }
53
55
  return result;
54
56
  };
55
57
  exports.getValidatedFileType = getValidatedFileType;
@@ -1 +1 @@
1
- {"version":3,"file":"getValidatedFileType.js","sourceRoot":"","sources":["../../lib/StorageClient/getValidatedFileType.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getValidatedFileType.js","sourceRoot":"","sources":["../../lib/StorageClient/getValidatedFileType.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"setupFileServeHandler.d.ts","sourceRoot":"","sources":["../../lib/StorageClient/setupFileServeHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAI7B,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,eAAO,MAAM,iBAAiB,GAAI,QAAQ,eAAe,WAOxD,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,IAAI,EAAE,EACN,QAAQ,eAAe,EACvB,eAAe,aAAa,EAC5B,KAAK,CAAC,CAAC,OAAO,EACd,KAAK,SAAS;;CAiFf,CAAC"}
1
+ {"version":3,"file":"setupFileServeHandler.d.ts","sourceRoot":"","sources":["../../lib/StorageClient/setupFileServeHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAI7B,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI1D,eAAO,MAAM,iBAAiB,GAAI,QAAQ,eAAe,WAOxD,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,IAAI,EAAE,EACN,QAAQ,eAAe,EACvB,eAAe,aAAa,EAC5B,KAAK,CAAC,CAAC,OAAO,EACd,KAAK,SAAS;;CAwFf,CAAC"}
@@ -38,6 +38,7 @@ const fs = __importStar(require("fs"));
38
38
  const path_1 = require("path");
39
39
  const AuthHandler_1 = require("../Auth/AuthHandler");
40
40
  const runClientRequest_1 = require("../runClientRequest");
41
+ const getFileStorageKey_1 = require("./getFileStorageKey");
41
42
  const getFileServeRoute = (config) => {
42
43
  const fileTableName = config.tableName;
43
44
  const fileServeRoute = config.fileServePath ?? `/${fileTableName}`;
@@ -60,6 +61,7 @@ const setupFileServeHandler = (db, config, storageClient, app, prg) => {
60
61
  const selectParams = {
61
62
  select: {
62
63
  id: 1,
64
+ storage_key: 1,
63
65
  signed_url: 1,
64
66
  signed_url_expires: 1,
65
67
  content_type: 1,
@@ -85,10 +87,16 @@ const setupFileServeHandler = (db, config, storageClient, app, prg) => {
85
87
  const HOUR = 3600 * 1000;
86
88
  const EXPIRES = Date.now() + HOUR;
87
89
  if (!url || expires < EXPIRES) {
88
- url = await storageClient.getSignedUrlForDownload(file.id, 60 * 60);
89
- await db.any("UPDATE ${fileTableName:name} SET signed_url = ${signed_url}, signed_url_expires = ${signed_url_expires} WHERE id = ${id}", {
90
+ url = await storageClient.getSignedUrlForDownload((0, getFileStorageKey_1.getFileStorageKey)(file), 60 * 60);
91
+ // Match the storage key to avoid caching a stale URL after replacement; NULL matches legacy files.
92
+ await db.any("UPDATE ${fileTableName:name} \
93
+ SET signed_url = ${signed_url}, \
94
+ signed_url_expires = ${signed_url_expires} \
95
+ WHERE id = ${id} \
96
+ AND storage_key IS NOT DISTINCT FROM ${storage_key}::uuid", {
90
97
  fileTableName,
91
98
  id: file.id,
99
+ storage_key: file.storage_key,
92
100
  signed_url: url,
93
101
  signed_url_expires: EXPIRES,
94
102
  });
@@ -96,7 +104,7 @@ const setupFileServeHandler = (db, config, storageClient, app, prg) => {
96
104
  res.redirect(url);
97
105
  }
98
106
  else {
99
- const localFilePath = (0, path_1.join)(storageClient.localFolderPath, file.id);
107
+ const localFilePath = (0, path_1.join)(storageClient.localFolderPath, (0, getFileStorageKey_1.getFileStorageKey)(file));
100
108
  if (!fs.existsSync(localFilePath)) {
101
109
  throw new Error("File not found");
102
110
  }
@@ -1 +1 @@
1
- {"version":3,"file":"setupFileServeHandler.js","sourceRoot":"","sources":["../../lib/StorageClient/setupFileServeHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setupFileServeHandler.js","sourceRoot":"","sources":["../../lib/StorageClient/setupFileServeHandler.ts"],"names":[],"mappings":"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"}
@@ -2,15 +2,21 @@ import type pgPromise from "pg-promise";
2
2
  import type { AnyObject, DBSchema } from "prostgles-types";
3
3
  import type { DbTxTableHandlers } from "../DboBuilder/DboBuilderTypes";
4
4
  import type { DBOFullyTyped } from "../DBSchemaBuilder/DBSchemaBuilder";
5
- import type { AfterAllTsTrigger, AfterEachTsTrigger, BeforeEachTsTrigger } from "../PublishParser/PublishParser";
5
+ import type { AfterAllTsTrigger, AfterEachTsTrigger, BeforeEachTsTrigger, TransactionCallbacks } from "../PublishParser/PublishParser";
6
6
  export type TableHooks<S = void, Context = undefined> = S extends DBSchema ? Partial<{
7
7
  [tableName in keyof S]: TableHooksDefinition<Required<S[tableName]["columns"]>, DBOFullyTyped<S>, Context>;
8
8
  }> : Record<string, TableHooksDefinition<AnyObject, DbTxTableHandlers, Context>>;
9
9
  export type TableHooksDefinition<RowDataType = AnyObject, DBX = DbTxTableHandlers, Context = undefined> = {
10
10
  /**
11
- * Runs sequentially before validation and SQL for each insert row, or once per update request.
11
+ * Runs sequentially before data validation and mutation SQL for each insert row,
12
+ * or once per update request, including requests with no matching rows.
13
+ * The update filter includes the publish forcedFilter.
14
+ * Also runs when generating SQL statements (including updateBatch).
15
+ * File inserts/updates reject SQL-only requests; file updates lock matching rows before hooks.
12
16
  * May replace the pending data and pass `hookContext` to the next hook.
13
- * `onInserted` also runs for updates, is not awaited, and runs before the transaction commits.
17
+ * Register `onCommit`/`onRollback` before starting external work so cleanup also runs if the
18
+ * hook throws. These callbacks are awaited after the outer transaction finishes and receive
19
+ * the non-transactional `db` and `dbo` objects.
14
20
  */
15
21
  beforeEach?: BeforeEachTsTrigger<RowDataType, DBX, Context>[];
16
22
  /**
@@ -31,6 +37,7 @@ export type TableHooksDefinition<RowDataType = AnyObject, DBX = DbTxTableHandler
31
37
  /**
32
38
  * Replaces the generated DELETE. Must perform the mutation and shape its return value using
33
39
  * the prepared filter and returning arguments. Delete `afterEach`/`afterAll` hooks do not run.
40
+ * Use `onCommit`/`onRollback` for external side effects after the outer transaction finishes.
34
41
  */
35
42
  onInsteadOfDelete?: (args: {
36
43
  context: Context;
@@ -43,6 +50,6 @@ export type TableHooksDefinition<RowDataType = AnyObject, DBX = DbTxTableHandler
43
50
  where: string;
44
51
  filter: AnyObject;
45
52
  };
46
- }) => Promise<AnyObject[] | undefined>;
53
+ } & TransactionCallbacks<DBX>) => Promise<AnyObject[] | undefined>;
47
54
  };
48
55
  //# sourceMappingURL=TableHooks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableHooks.d.ts","sourceRoot":"","sources":["../../lib/TableHooks/TableHooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,gCAAgC,CAAC;AAExC,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,GAAG,SAAS,IAClD,CAAC,SAAS,QAAQ,GAChB,OAAO,CAAC;KACL,SAAS,IAAI,MAAM,CAAC,GAAG,oBAAoB,CAC1C,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,EACjC,aAAa,CAAC,CAAC,CAAC,EAChB,OAAO,CACR;CACF,CAAC,GACF,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC;AAEhF,MAAM,MAAM,oBAAoB,CAC9B,WAAW,GAAG,SAAS,EACvB,GAAG,GAAG,iBAAiB,EACvB,OAAO,GAAG,SAAS,IACjB;IACF;;;;OAIG;IACH,UAAU,CAAC,EAAE,mBAAmB,CAAC,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;IAE9D;;;;;OAKG;IACH,SAAS,CAAC,EAAE,kBAAkB,CAAC,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;IAE5D;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAC,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;IAE1D;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE;QACzB,OAAO,EAAE,OAAO,CAAC;QACjB,GAAG,EAAE,GAAG,CAAC;QACT,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,OAAO,CAAC;QACrB,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;QAC1B,UAAU,EAAE;YACV,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE,SAAS,CAAC;SACnB,CAAC;KACH,KAAK,OAAO,CAAC,SAAS,EAAE,GAAG,SAAS,CAAC,CAAC;CACxC,CAAC"}
1
+ {"version":3,"file":"TableHooks.d.ts","sourceRoot":"","sources":["../../lib/TableHooks/TableHooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,gCAAgC,CAAC;AAExC,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,GAAG,SAAS,IAClD,CAAC,SAAS,QAAQ,GAChB,OAAO,CAAC;KACL,SAAS,IAAI,MAAM,CAAC,GAAG,oBAAoB,CAC1C,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,EACjC,aAAa,CAAC,CAAC,CAAC,EAChB,OAAO,CACR;CACF,CAAC,GACF,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC;AAEhF,MAAM,MAAM,oBAAoB,CAC9B,WAAW,GAAG,SAAS,EACvB,GAAG,GAAG,iBAAiB,EACvB,OAAO,GAAG,SAAS,IACjB;IACF;;;;;;;;;;OAUG;IACH,UAAU,CAAC,EAAE,mBAAmB,CAAC,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;IAE9D;;;;;OAKG;IACH,SAAS,CAAC,EAAE,kBAAkB,CAAC,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;IAE5D;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAC,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;IAE1D;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,CAClB,IAAI,EAAE;QACJ,OAAO,EAAE,OAAO,CAAC;QACjB,GAAG,EAAE,GAAG,CAAC;QACT,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,OAAO,CAAC;QACrB,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;QAC1B,UAAU,EAAE;YACV,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE,SAAS,CAAC;SACnB,CAAC;KACH,GAAG,oBAAoB,CAAC,GAAG,CAAC,KAC1B,OAAO,CAAC,SAAS,EAAE,GAAG,SAAS,CAAC,CAAC;CACvC,CAAC"}
@@ -6,12 +6,13 @@ import { type PublishObject } from "../PublishParser/PublishParser";
6
6
  export type ServerTableHandler<
7
7
  T extends AnyObject = AnyObject,
8
8
  Schema extends DBSchema | void = void,
9
- > = TableHandler<T, Schema> & { isView: boolean };
9
+ TName extends PropertyKey = never,
10
+ > = TableHandler<T, Schema, TName> & { isView: boolean };
10
11
 
11
12
  export type DBTableHandlersFromSchema<Schema = void> =
12
13
  Schema extends DBSchema ?
13
14
  {
14
- [tov_name in keyof Schema]: ServerTableHandler<Schema[tov_name]["columns"], Schema>;
15
+ [tov_name in keyof Schema]: ServerTableHandler<Schema[tov_name]["columns"], Schema, tov_name>;
15
16
  }
16
17
  : Record<string, Partial<ServerTableHandler>>;
17
18
 
@@ -141,6 +141,13 @@ export class DboBuilder {
141
141
  onSchemaChange?: (event: { command: string; query: string }) => void;
142
142
 
143
143
  private readonly onCommitCallbacksByTransaction = new WeakMap<object, OnCommitCallback[]>();
144
+ private readonly onRollbackCallbacksByTransaction = new WeakMap<object, OnCommitCallback[]>();
145
+
146
+ registerOnRollbackCallback = (transaction: object, callback: OnCommitCallback) => {
147
+ const callbacks = this.onRollbackCallbacksByTransaction.get(transaction);
148
+ if (!callbacks) throw new Error("Transaction is not active");
149
+ callbacks.push(callback);
150
+ };
144
151
 
145
152
  registerOnCommitCallback = (transaction: object, callback: OnCommitCallback) => {
146
153
  const callbacks = this.onCommitCallbacksByTransaction.get(transaction);
@@ -150,7 +157,10 @@ export class DboBuilder {
150
157
  callbacks.push(callback);
151
158
  };
152
159
 
153
- private runOnCommitCallbacks = async (callbacks: OnCommitCallback[]) => {
160
+ private runOnCommitCallbacks = async (
161
+ callbacks: OnCommitCallback[],
162
+ command: "DboBuilder.onCommit" | "DboBuilder.onRollback" = "DboBuilder.onCommit",
163
+ ) => {
154
164
  for (const callback of callbacks) {
155
165
  const start = Date.now();
156
166
  try {
@@ -159,13 +169,13 @@ export class DboBuilder {
159
169
  const error = getSerialisableError(rawError);
160
170
  const onLog = this.prostgles.opts.onLog;
161
171
  if (!onLog) {
162
- console.error("DboBuilder.onCommit callback failed", error);
172
+ console.error(`${command} callback failed`, error);
163
173
  continue;
164
174
  }
165
175
  try {
166
176
  await onLog({
167
177
  type: "debug",
168
- command: "DboBuilder.onCommit",
178
+ command,
169
179
  duration: Date.now() - start,
170
180
  error,
171
181
  });
@@ -423,12 +433,14 @@ export class DboBuilder {
423
433
 
424
434
  getTX = async <R, TH extends DbTxTableHandlers>(cb: TxCB<Promise<R> | R, TH>) => {
425
435
  const onCommitCallbacks: OnCommitCallback[] = [];
436
+ const onRollbackCallbacks: OnCommitCallback[] = [];
426
437
  let transaction: object | undefined;
427
438
  let result: R;
428
439
  try {
429
440
  result = await this.db.tx((t) => {
430
441
  transaction = t;
431
442
  this.onCommitCallbacksByTransaction.set(transaction, onCommitCallbacks);
443
+ this.onRollbackCallbacksByTransaction.set(transaction, onRollbackCallbacks);
432
444
 
433
445
  const dbTX: DbTxTableHandlers = {};
434
446
  this.tablesOrViews?.map((tov) => {
@@ -447,10 +459,13 @@ export class DboBuilder {
447
459
  });
448
460
  } catch (error) {
449
461
  if (transaction) this.onCommitCallbacksByTransaction.delete(transaction);
462
+ if (transaction) this.onRollbackCallbacksByTransaction.delete(transaction);
463
+ await this.runOnCommitCallbacks(onRollbackCallbacks, "DboBuilder.onRollback");
450
464
  throw error;
451
465
  }
452
466
 
453
467
  if (transaction) this.onCommitCallbacksByTransaction.delete(transaction);
468
+ if (transaction) this.onRollbackCallbacksByTransaction.delete(transaction);
454
469
  await this.runOnCommitCallbacks(onCommitCallbacks);
455
470
  return result;
456
471
  };
@@ -40,6 +40,7 @@ import { upsert } from "./upsert";
40
40
  import { isApplicableHook } from "./isApplicableHook";
41
41
  import type { TableConfigurator } from "../../TableConfig/TableConfigurator";
42
42
  import type { TableHooksDefinition } from "../../TableHooks/TableHooks";
43
+ import type { TransactionCallbacks } from "../../PublishParser/publishTypesAndUtils";
43
44
 
44
45
  export type ValidatedParams = {
45
46
  row: AnyObject;
@@ -98,12 +99,13 @@ export class TableHandler extends ViewHandler {
98
99
  await transaction.t.none(withUserRLS(localParams, ""));
99
100
  }
100
101
  let newRow = row;
102
+ const initialKeys = Object.keys(row);
101
103
  let newHookContext: AnyObject | undefined = undefined;
102
- const successCallbacks: (() => void)[] = [];
103
104
  for (const hook of hooks) {
104
105
  const isApplicable = isApplicableHook(this, [newRow], hook, command);
105
106
  if (!isApplicable) continue;
106
107
  const hookResult = await hook.validate({
108
+ ...this.getTransactionCallbacks(localParams),
107
109
  command,
108
110
  context: this.dboBuilder.prostgles.context,
109
111
  data: newRow,
@@ -116,21 +118,31 @@ export class TableHandler extends ViewHandler {
116
118
  if (hookResult) {
117
119
  newRow = hookResult.row;
118
120
  newHookContext = hookResult.hookContext;
119
- const { onInserted } = hookResult;
120
- if (onInserted) {
121
- successCallbacks.push(onInserted);
122
- }
123
121
  }
124
122
  }
125
123
 
126
- const initialKeys = Object.keys(row);
127
124
  return {
128
125
  row: newRow,
129
- successCallbacks,
130
126
  columnsAdded: Object.keys(newRow).filter((col) => !initialKeys.includes(col)),
131
127
  };
132
128
  };
133
129
 
130
+ getTransactionCallbacks = (
131
+ localParams: LocalParams | undefined,
132
+ ): TransactionCallbacks<TableHandlers> => {
133
+ const transaction = this.getTransaction(localParams);
134
+ return {
135
+ onCommit: (callback) => {
136
+ if (!transaction) throw new Error("onCommit requires a transaction");
137
+ this.dboBuilder.registerOnCommitCallback(transaction.t, callback);
138
+ },
139
+ onRollback: (callback) => {
140
+ if (!transaction) throw new Error("onRollback requires a transaction");
141
+ this.dboBuilder.registerOnRollbackCallback(transaction.t, callback);
142
+ },
143
+ };
144
+ };
145
+
134
146
  getAfterHooksAndChecks = (
135
147
  command:
136
148
  | { name: "delete"; rule: undefined | DeleteRule }
@@ -163,6 +163,7 @@ export async function _delete(
163
163
  await transaction.t.none(withUserRLS(localParams, ""));
164
164
  }
165
165
  const result = await onInsteadOfDelete({
166
+ ...this.getTransactionCallbacks(localParams),
166
167
  context: this.dboBuilder.prostgles.context,
167
168
  queryType,
168
169
  isOneOrNone,
@@ -47,8 +47,7 @@ export const executeAfterHooksCheckAndPostValidation = async ({
47
47
  const txParams = {
48
48
  tx: transaction.t,
49
49
  dbx: transaction.dbTX,
50
- onCommit: (callback: Parameters<typeof tableHandler.dboBuilder.registerOnCommitCallback>[1]) =>
51
- tableHandler.dboBuilder.registerOnCommitCallback(transaction.t, callback),
50
+ ...tableHandler.getTransactionCallbacks(localParams),
52
51
  };
53
52
 
54
53
  const txKey = transaction.t as unknown as object;
@@ -86,22 +86,29 @@ export async function insert(
86
86
  });
87
87
 
88
88
  validateInsertParams(insertParams);
89
+ if (this.is_media) {
90
+ if (insertParams?.returnType === "statement" || localParams?.returnQuery) {
91
+ throw new Error("File inserts cannot return SQL statements");
92
+ }
93
+ const conflict = insertParams?.onConflict;
94
+ if ((typeof conflict === "string" ? conflict : conflict?.action) === "DoUpdate") {
95
+ throw new Error("Use update to replace an existing file");
96
+ }
97
+ }
89
98
 
90
99
  const transaction = this.getTransaction(localParams);
91
100
  const tx = transaction?.t || this.db;
92
101
 
93
- const successCallbacks: (() => void)[] = [];
94
- const preValidatedRows: InsertedRowWithInfo[] = await Promise.all(
95
- rows.map(async (nonValidated) => {
102
+ const preparedRows = await Promise.allSettled(
103
+ rows.map(async (input) => {
96
104
  const { preValidate } = rule ?? {};
97
105
  const { tableConfigurator } = this.dboBuilder.prostgles;
98
106
  if (!tableConfigurator) {
99
107
  throw "tableConfigurator missing";
100
108
  }
101
109
 
102
- const beforeResult = await this.beforeEach(nonValidated, localParams, "insert", undefined);
110
+ const beforeResult = await this.beforeEach(input, localParams, "insert", undefined);
103
111
  let row = beforeResult.row;
104
- beforeResult.successCallbacks.forEach((cb) => successCallbacks.push(cb));
105
112
 
106
113
  if (preValidate) {
107
114
  if (!localParams) {
@@ -120,6 +127,10 @@ export async function insert(
120
127
  return { row, columnsAddedFromBeforeHooks: beforeResult.columnsAdded };
121
128
  }),
122
129
  );
130
+ const preValidatedRows: InsertedRowWithInfo[] = preparedRows.map((result) => {
131
+ if (result.status === "rejected") throw result.reason;
132
+ return result.value;
133
+ });
123
134
  const preValidatedRowOrRows = isMultiInsert ? preValidatedRows : preValidatedRows[0]!;
124
135
 
125
136
  /**
@@ -204,7 +215,6 @@ export async function insert(
204
215
  data: { rowOrRows, param2: insertParams },
205
216
  duration: Date.now() - start,
206
217
  });
207
- successCallbacks.forEach((cb) => cb());
208
218
  return result;
209
219
  } catch (e) {
210
220
  await this._log({