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.
- package/dist/DboBuilder/DboBuilder.d.ts +1 -1
- package/dist/DboBuilder/QueryBuilder/QueryBuilder.js +1 -1
- package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.d.ts +1 -2
- package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.js +2 -2
- package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.js.map +1 -1
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js +58 -40
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js.map +1 -1
- package/dist/DboBuilder/TableHandler/updateFile.d.ts +4 -7
- package/dist/DboBuilder/TableHandler/updateFile.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/updateFile.js +7 -6
- package/dist/DboBuilder/TableHandler/updateFile.js.map +1 -1
- package/dist/DboBuilder/TableHandler/uploadFile.d.ts +31 -0
- package/dist/DboBuilder/TableHandler/uploadFile.d.ts.map +1 -0
- package/dist/DboBuilder/{uploadFile.js → TableHandler/uploadFile.js} +26 -14
- package/dist/DboBuilder/TableHandler/uploadFile.js.map +1 -0
- package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts +1 -0
- package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/ViewHandler.js +2 -0
- package/dist/DboBuilder/ViewHandler/ViewHandler.js.map +1 -1
- package/dist/DboBuilder/runSql/runSqlUtils.d.ts +1 -1
- package/dist/StorageClient/getFileTableConfig.d.ts +12 -10
- package/dist/StorageClient/getFileTableConfig.d.ts.map +1 -1
- package/dist/StorageClient/getFileTableConfig.js +17 -13
- package/dist/StorageClient/getFileTableConfig.js.map +1 -1
- package/dist/StorageClient/setupFileServeHandler.d.ts.map +1 -1
- package/dist/StorageClient/setupFileServeHandler.js +5 -7
- package/dist/StorageClient/setupFileServeHandler.js.map +1 -1
- package/dist/updateConfiguration.d.ts +1 -1
- package/dist/updateConfiguration.d.ts.map +1 -1
- package/dist/updateConfiguration.js +1 -0
- package/dist/updateConfiguration.js.map +1 -1
- package/lib/DboBuilder/QueryBuilder/QueryBuilder.ts +1 -1
- package/lib/DboBuilder/TableHandler/onDeleteFromFileTable.ts +3 -3
- package/lib/DboBuilder/TableHandler/runInsertUpdateQuery.ts +72 -47
- package/lib/DboBuilder/TableHandler/updateFile.ts +12 -10
- package/lib/DboBuilder/{uploadFile.ts → TableHandler/uploadFile.ts} +43 -22
- package/lib/DboBuilder/ViewHandler/ViewHandler.ts +2 -0
- package/lib/StorageClient/getFileTableConfig.ts +26 -13
- package/lib/StorageClient/setupFileServeHandler.ts +6 -7
- package/lib/updateConfiguration.ts +1 -0
- package/package.json +2 -2
- package/dist/DboBuilder/uploadFile.d.ts +0 -26
- package/dist/DboBuilder/uploadFile.d.ts.map +0 -1
- 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
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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 {
|
|
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
|
-
|
|
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
|
-
|
|
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 + "/:
|
|
30
|
+
const fileRouteExpress = fileServeRoute + "/:id";
|
|
31
31
|
|
|
32
32
|
app.get(fileRouteExpress, async (req, res) => {
|
|
33
33
|
try {
|
|
34
|
-
const {
|
|
35
|
-
if (typeof
|
|
34
|
+
const { id } = req.params;
|
|
35
|
+
if (typeof id !== "string" || !id) {
|
|
36
36
|
throw "Invalid media name";
|
|
37
37
|
}
|
|
38
|
-
|
|
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.
|
|
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.
|
|
89
|
+
const localFilePath = join(storageClient.localFolderPath, file.id);
|
|
91
90
|
if (!fs.existsSync(localFilePath)) {
|
|
92
91
|
throw new Error("File not found");
|
|
93
92
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prostgles-server",
|
|
3
|
-
"version": "4.2.
|
|
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.
|
|
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"}
|