prostgles-server 4.2.575 → 4.2.577

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 (46) hide show
  1. package/dist/DboBuilder/DboBuilder.d.ts +1 -1
  2. package/dist/DboBuilder/QueryBuilder/QueryBuilder.js +1 -1
  3. package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.d.ts +1 -2
  4. package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.d.ts.map +1 -1
  5. package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.js +2 -2
  6. package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.js.map +1 -1
  7. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.d.ts.map +1 -1
  8. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js +58 -40
  9. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js.map +1 -1
  10. package/dist/DboBuilder/TableHandler/updateFile.d.ts +4 -7
  11. package/dist/DboBuilder/TableHandler/updateFile.d.ts.map +1 -1
  12. package/dist/DboBuilder/TableHandler/updateFile.js +7 -6
  13. package/dist/DboBuilder/TableHandler/updateFile.js.map +1 -1
  14. package/dist/DboBuilder/TableHandler/uploadFile.d.ts +31 -0
  15. package/dist/DboBuilder/TableHandler/uploadFile.d.ts.map +1 -0
  16. package/dist/DboBuilder/{uploadFile.js → TableHandler/uploadFile.js} +26 -14
  17. package/dist/DboBuilder/TableHandler/uploadFile.js.map +1 -0
  18. package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts +1 -0
  19. package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts.map +1 -1
  20. package/dist/DboBuilder/ViewHandler/ViewHandler.js +2 -0
  21. package/dist/DboBuilder/ViewHandler/ViewHandler.js.map +1 -1
  22. package/dist/DboBuilder/runSql/runSqlUtils.d.ts +1 -1
  23. package/dist/StorageClient/getFileTableConfig.d.ts +12 -10
  24. package/dist/StorageClient/getFileTableConfig.d.ts.map +1 -1
  25. package/dist/StorageClient/getFileTableConfig.js +17 -13
  26. package/dist/StorageClient/getFileTableConfig.js.map +1 -1
  27. package/dist/StorageClient/setupFileServeHandler.d.ts.map +1 -1
  28. package/dist/StorageClient/setupFileServeHandler.js +5 -7
  29. package/dist/StorageClient/setupFileServeHandler.js.map +1 -1
  30. package/dist/updateConfiguration.d.ts +1 -1
  31. package/dist/updateConfiguration.d.ts.map +1 -1
  32. package/dist/updateConfiguration.js +1 -0
  33. package/dist/updateConfiguration.js.map +1 -1
  34. package/lib/DboBuilder/QueryBuilder/QueryBuilder.ts +1 -1
  35. package/lib/DboBuilder/TableHandler/onDeleteFromFileTable.ts +3 -3
  36. package/lib/DboBuilder/TableHandler/runInsertUpdateQuery.ts +72 -47
  37. package/lib/DboBuilder/TableHandler/updateFile.ts +12 -10
  38. package/lib/DboBuilder/{uploadFile.ts → TableHandler/uploadFile.ts} +43 -22
  39. package/lib/DboBuilder/ViewHandler/ViewHandler.ts +2 -0
  40. package/lib/StorageClient/getFileTableConfig.ts +26 -13
  41. package/lib/StorageClient/setupFileServeHandler.ts +6 -7
  42. package/lib/updateConfiguration.ts +1 -0
  43. package/package.json +2 -2
  44. package/dist/DboBuilder/uploadFile.d.ts +0 -26
  45. package/dist/DboBuilder/uploadFile.d.ts.map +0 -1
  46. package/dist/DboBuilder/uploadFile.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { omitKeys } from "prostgles-types";
2
2
  import { updateFile } from "../DboBuilder/TableHandler/updateFile";
3
- import { assertFileObjectValid, uploadFile } from "../DboBuilder/uploadFile";
3
+ import { assertFileObjectValid, uploadFile } from "../DboBuilder/TableHandler/uploadFile";
4
4
  import type { Prostgles } from "../Prostgles";
5
5
  import type { TableConfig } from "../TableConfig/TableConfigTypes";
6
6
  import { setupFileServeHandler } from "./setupFileServeHandler";
@@ -8,27 +8,33 @@ import { onDeleteFromFileTable } from "../DboBuilder/TableHandler/onDeleteFromFi
8
8
  import type { BeforeEachTsTrigger } from "../PublishParser/publishTypesAndUtils";
9
9
 
10
10
  const FILE_TABLE_COLUMN_DEFINITIONS = {
11
- name: `TEXT NOT NULL UNIQUE`,
12
- extension: `TEXT NOT NULL`,
13
- content_type: `TEXT NOT NULL`,
14
- content_length: `BIGINT NOT NULL DEFAULT 0`,
15
- added: `TIMESTAMP NOT NULL DEFAULT NOW()`,
16
- url: `TEXT NOT NULL`,
17
11
  id: `UUID PRIMARY KEY DEFAULT gen_random_uuid()`,
12
+ extension: `TEXT NOT NULL DEFAULT ''`,
13
+ content_type: `TEXT NOT NULL DEFAULT ''`,
14
+ content_length: `BIGINT NOT NULL DEFAULT 0`,
15
+ etag: `TEXT NOT NULL DEFAULT ''`,
18
16
  original_name: `TEXT NOT NULL`,
17
+ original_last_modified: `TIMESTAMPTZ`,
19
18
  description: `TEXT`,
19
+ url: `TEXT NOT NULL DEFAULT ''`,
20
20
  cloud_url: `TEXT`,
21
21
  signed_url: `TEXT`,
22
22
  signed_url_expires: `BIGINT`,
23
- etag: `TEXT NOT NULL`,
24
- deleted: `BIGINT`,
25
- deleted_from_storage: `BIGINT`,
23
+ added: `TIMESTAMP NOT NULL DEFAULT NOW()`,
24
+ updated: `TIMESTAMP NOT NULL DEFAULT NOW()`,
25
+ deleted: `TIMESTAMPTZ`,
26
+ deleted_from_storage: `TIMESTAMPTZ`,
27
+ data: `BYTEA NOT NULL CHECK (data = decode('01', 'hex'))`, // Used as a placeholder to ensure insert types are correct. Actual data is uploaded to storageClient and not stored in the DB
26
28
  } as const;
27
29
 
28
30
  type FileTableColumnDefinitions = typeof FILE_TABLE_COLUMN_DEFINITIONS;
29
31
 
30
32
  export type FileTableRow = {
31
33
  [K in keyof FileTableColumnDefinitions as K]: FileTableColumnDefinitions[K] extends (
34
+ `BYTEA NOT NULL${string}`
35
+ ) ?
36
+ Buffer
37
+ : FileTableColumnDefinitions[K] extends (
32
38
  `${string} NOT NULL${string}` | `${string}PRIMARY KEY${string}`
33
39
  ) ?
34
40
  string
@@ -101,14 +107,20 @@ export const getFileTableConfig = (prg: Prostgles): TableConfig | undefined => {
101
107
  if (!tableHandler) throw "Storage tableHandler not found";
102
108
  assertFileObjectValid(insertData);
103
109
 
104
- const { data: dataBlob, name, id } = insertData;
110
+ const {
111
+ data: dataBlob,
112
+ original_name,
113
+ id,
114
+ original_last_modified = null,
115
+ } = insertData;
105
116
  const data = dataBlob as unknown as Buffer;
106
117
  if (command === "update") {
107
118
  const { newData } = await updateFile(tableHandler, fileTable, {
108
119
  filter: filter ?? {},
109
120
  localParams,
110
121
  data,
111
- name,
122
+ original_name,
123
+ original_last_modified,
112
124
  });
113
125
  return {
114
126
  row: newData,
@@ -120,9 +132,10 @@ export const getFileTableConfig = (prg: Prostgles): TableConfig | undefined => {
120
132
 
121
133
  const media = await uploadFile(fileTable, {
122
134
  data,
123
- name,
135
+ original_name,
124
136
  localParams,
125
137
  mediaId: id,
138
+ original_last_modified,
126
139
  });
127
140
 
128
141
  return {
@@ -27,19 +27,18 @@ export const setupFileServeHandler = (
27
27
  ) => {
28
28
  const fileTableName = config.tableName;
29
29
  const fileServeRoute = getFileServeRoute(config);
30
- const fileRouteExpress = fileServeRoute + "/:name";
30
+ const fileRouteExpress = fileServeRoute + "/:id";
31
31
 
32
32
  app.get(fileRouteExpress, async (req, res) => {
33
33
  try {
34
- const { name } = req.params;
35
- if (typeof name !== "string" || !name) {
34
+ const { id } = req.params;
35
+ if (typeof id !== "string" || !id) {
36
36
  throw "Invalid media name";
37
37
  }
38
- const id = name.slice(0, 36);
38
+
39
39
  const selectParams = {
40
40
  select: {
41
41
  id: 1,
42
- name: 1,
43
42
  signed_url: 1,
44
43
  signed_url_expires: 1,
45
44
  content_type: 1,
@@ -72,7 +71,7 @@ export const setupFileServeHandler = (
72
71
  const HOUR = 3600 * 1000;
73
72
  const EXPIRES = Date.now() + HOUR;
74
73
  if (!url || expires < EXPIRES) {
75
- url = await storageClient.getSignedUrlForDownload(file.name, 60 * 60);
74
+ url = await storageClient.getSignedUrlForDownload(file.id, 60 * 60);
76
75
 
77
76
  await db.any(
78
77
  "UPDATE ${fileTableName:name} SET signed_url = ${signed_url}, signed_url_expires = ${signed_url_expires} WHERE id = ${id}",
@@ -87,7 +86,7 @@ export const setupFileServeHandler = (
87
86
 
88
87
  res.redirect(url);
89
88
  } else {
90
- const localFilePath = join(storageClient.localFolderPath, file.name);
89
+ const localFilePath = join(storageClient.localFolderPath, file.id);
91
90
  if (!fs.existsSync(localFilePath)) {
92
91
  throw new Error("File not found");
93
92
  }
@@ -73,4 +73,5 @@ export const clientOnlyUpdateKeys = [
73
73
  "publish",
74
74
  "functions",
75
75
  "publishRawSQL",
76
+ "modifyClientSchema",
76
77
  ] as const satisfies (keyof UpdatableOptions)[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prostgles-server",
3
- "version": "4.2.575",
3
+ "version": "4.2.577",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -57,7 +57,7 @@
57
57
  "pg": "^8.21.0",
58
58
  "pg-cursor": "^2.21.0",
59
59
  "pg-promise": "^12.7.0",
60
- "prostgles-types": "^4.0.273"
60
+ "prostgles-types": "^4.0.274"
61
61
  },
62
62
  "devDependencies": {
63
63
  "@eslint/js": "^9.22.0",
@@ -1,26 +0,0 @@
1
- import { type JSONB } from "prostgles-types";
2
- import type { FileTableConfig } from "../ProstglesTypes";
3
- import type { FileTableRow } from "../StorageClient/getFileTableConfig";
4
- import type { LocalParams } from "./DboBuilder";
5
- declare const FILE_SCHEMA: {
6
- readonly id: {
7
- readonly type: "string";
8
- readonly optional: true;
9
- };
10
- readonly name: "string";
11
- readonly data: "Blob";
12
- };
13
- type AssertFileObjectValid = (row: any) => asserts row is JSONB.GetObjectType<typeof FILE_SCHEMA>;
14
- export declare const assertFileObjectValid: AssertFileObjectValid;
15
- type UploadFileArgs = {
16
- data: Buffer<ArrayBufferLike>;
17
- name: string;
18
- localParams: LocalParams | undefined;
19
- /**
20
- * Used to update an existing file
21
- */
22
- mediaId: string | undefined;
23
- };
24
- export declare const uploadFile: (config: FileTableConfig, { data, name, localParams, mediaId }: UploadFileArgs) => Promise<FileTableRow>;
25
- export {};
26
- //# sourceMappingURL=uploadFile.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"uploadFile.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/uploadFile.ts"],"names":[],"mappings":"AACA,OAAO,EAAkC,KAAK,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAGxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,QAAA,MAAM,WAAW;;;;;;;CAIP,CAAC;AAEX,KAAK,qBAAqB,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,OAAO,WAAW,CAAC,CAAC;AAElG,eAAO,MAAM,qBAAqB,EAAE,qBAEnC,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,QAAQ,eAAe,EACvB,sCAAsC,cAAc,KACnD,OAAO,CAAC,YAAY,CAgDtB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"uploadFile.js","sourceRoot":"","sources":["../../lib/DboBuilder/uploadFile.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AACpC,qDAA6E;AAG7E,gFAA6E;AAC7E,kFAA2E;AAG3E,MAAM,WAAW,GAAG;IAClB,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtC,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,MAAM;CACJ,CAAC;AAIJ,MAAM,qBAAqB,GAA0B,CAAC,GAAG,EAAE,EAAE;IAClE,IAAA,gDAA8B,EAAC,WAAW,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;AAClE,CAAC,CAAC;AAFW,QAAA,qBAAqB,yBAEhC;AAYK,MAAM,UAAU,GAAG,KAAK,EAC7B,MAAuB,EACvB,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAkB,EAC7B,EAAE;IACzB,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAE3C,MAAM,QAAQ,GAAG,OAAO,IAAI,IAAA,mBAAU,GAAE,CAAC;IACzC,MAAM,YAAY,GAAG,WAAW,EAAE,YAAY,CAAC;IAC/C,MAAM,IAAI,GAAG,MAAM,IAAA,2CAAoB,EAAC,MAAM,EAAE;QAC9C,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,YAAY,EAAE,aAAa;QACtC,OAAO,EAAE,YAAY,EAAE,iBAAiB;KACzC,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,GAAG,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7C,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,CAAU,CAAC;IAC/F,MAAM,QAAQ,GAAoE;QAChF,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,UAAU;QAChB,aAAa,EAAE,IAAI;QACnB,SAAS,EAAE,IAAI,CAAC,GAAG;QACnB,YAAY,EAAE,IAAI,CAAC,IAAI;KACxB,CAAC;IAEF,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;QAC9C,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,QAAQ,CAAC,IAAI;QACvB,WAAW,EAAE,QAAQ,CAAC,YAAY;KACnC,CAAC,CAAC;IAEH,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC;IACpD,MAAM,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,MAAM,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAElE,MAAM,cAAc,GAAG,IAAA,yCAAiB,EAAC,MAAM,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAiB;QAC7B,UAAU,EAAE,IAAI;QAChB,kBAAkB,EAAE,IAAI;QACxB,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC/B,OAAO,EAAE,IAAI;QACb,oBAAoB,EAAE,IAAI;QAC1B,WAAW,EAAE,EAAE;QACf,GAAG,QAAQ;QACX,SAAS,EAAE,GAAG,IAAI,EAAE;QACpB,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,IAAI,CAAC,GAAG;QACnB,GAAG,EAAE,CAAC,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC9C,cAAc,EAAE,MAAM,CAAC,aAAa,CAAC;KACtC,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAnDW,QAAA,UAAU,cAmDrB"}