prostgles-server 4.1.2 → 4.1.4
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/getTablesForSchemaPostgresSQL.js +127 -127
- package/dist/DboBuilder/getTablesForSchemaPostgresSQL.js.map +1 -1
- package/dist/FileManager/FileManager.d.ts +29 -35
- package/dist/FileManager/FileManager.d.ts.map +1 -1
- package/dist/FileManager/FileManager.js +10 -51
- package/dist/FileManager/FileManager.js.map +1 -1
- package/dist/FileManager/initFileManager.d.ts.map +1 -1
- package/dist/FileManager/initFileManager.js +3 -3
- package/dist/FileManager/initFileManager.js.map +1 -1
- package/dist/FileManager/upload.d.ts.map +1 -1
- package/dist/FileManager/upload.js +18 -36
- package/dist/FileManager/upload.js.map +1 -1
- package/dist/FileManager/uploadStream.d.ts.map +1 -1
- package/dist/FileManager/uploadStream.js +2 -3
- package/dist/FileManager/uploadStream.js.map +1 -1
- package/dist/Prostgles.d.ts +2 -2
- package/dist/Prostgles.d.ts.map +1 -1
- package/dist/Prostgles.js +3 -3
- package/dist/Prostgles.js.map +1 -1
- package/lib/DboBuilder/getTablesForSchemaPostgresSQL.ts +127 -127
- package/lib/FileManager/FileManager.ts +33 -65
- package/lib/FileManager/initFileManager.ts +3 -4
- package/lib/FileManager/upload.ts +43 -64
- package/lib/FileManager/uploadStream.ts +2 -3
- package/lib/Prostgles.ts +6 -6
- package/package.json +1 -4
- package/tests/client/PID.txt +1 -1
- package/tests/server/package-lock.json +1 -7
|
@@ -6,135 +6,135 @@ const PubSubManager_1 = require("../PubSubManager/PubSubManager");
|
|
|
6
6
|
async function getTablesForSchemaPostgresSQL({ db, runSQL }, schema = "public") {
|
|
7
7
|
const query = `
|
|
8
8
|
SELECT
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
9
|
+
jsonb_build_object(
|
|
10
|
+
'insert', TRUE,
|
|
11
|
+
'select', TRUE,
|
|
12
|
+
'update', TRUE,
|
|
13
|
+
'delete', EXISTS (
|
|
14
|
+
SELECT 1
|
|
15
|
+
FROM information_schema.role_table_grants rg
|
|
16
|
+
WHERE rg.table_name = t.table_name
|
|
17
|
+
AND rg.privilege_type = 'DELETE'
|
|
18
|
+
)
|
|
19
|
+
) as privileges
|
|
20
|
+
, t.table_schema as schema, t.table_name as name
|
|
21
|
+
, COALESCE(cc.columns, '[]'::JSONB) as columns
|
|
22
|
+
, t.oid
|
|
23
|
+
, t.is_view
|
|
24
|
+
, t.view_definition
|
|
25
|
+
, array_to_json(vr.table_names) as parent_tables
|
|
26
|
+
, obj_description(t.oid::regclass) as comment
|
|
27
|
+
FROM (
|
|
28
|
+
SELECT table_name,
|
|
29
|
+
table_schema,
|
|
30
|
+
oid,
|
|
31
|
+
is_view,
|
|
32
|
+
CASE WHEN is_view THEN pg_get_viewdef(format('%I.%I', table_schema, table_name)::REGCLASS, true) END as view_definition
|
|
33
|
+
FROM (
|
|
34
|
+
SELECT table_name, table_schema, table_type = 'VIEW' as is_view, regclass(table_schema || '.' || table_name)::oid as oid
|
|
35
|
+
FROM information_schema.tables
|
|
35
36
|
/* TODO - add support for materialized views
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
37
|
+
UNION ALL
|
|
38
|
+
SELECT table_name, table_schema
|
|
39
|
+
FROM (
|
|
40
|
+
SELECT relname as table_name, nspname as table_schema, true as is_view
|
|
41
|
+
FROM pg_catalog.pg_class AS _c
|
|
42
|
+
JOIN pg_catalog.pg_namespace AS _ns
|
|
43
|
+
ON _c.relnamespace = _ns.oid
|
|
44
|
+
WHERE relkind IN ( 'm' )
|
|
45
|
+
) materialized_views
|
|
45
46
|
*/
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
47
|
+
) tables_matviews
|
|
48
|
+
WHERE table_schema = ${(0, PubSubManager_1.asValue)(schema)}
|
|
49
|
+
) t
|
|
50
|
+
LEFT join (
|
|
51
|
+
SELECT table_schema, table_name
|
|
52
|
+
, jsonb_agg((SELECT x FROM (
|
|
53
|
+
SELECT ccc.column_name as name,
|
|
54
|
+
ccc.data_type,
|
|
55
|
+
ccc.udt_name,
|
|
56
|
+
ccc.element_type,
|
|
57
|
+
ccc.element_udt_name,
|
|
58
|
+
ccc.is_pkey,
|
|
59
|
+
ccc.comment,
|
|
60
|
+
ccc.ordinal_position,
|
|
61
|
+
ccc.is_nullable = 'YES' as is_nullable,
|
|
62
|
+
ccc.is_updatable,
|
|
63
|
+
ccc.references,
|
|
64
|
+
ccc.has_default,
|
|
65
|
+
ccc.column_default,
|
|
66
|
+
COALESCE(ccc.privileges, '[]'::JSON) as privileges
|
|
67
|
+
) as x) ORDER BY ccc.ordinal_position ) as columns
|
|
68
|
+
FROM (
|
|
69
|
+
SELECT c.table_schema, c.table_name, c.column_name, c.data_type, c.udt_name
|
|
70
|
+
, e.data_type as element_type
|
|
71
|
+
, e.udt_name as element_udt_name
|
|
72
|
+
, col_description(format('%I.%I', c.table_schema, c.table_name)::regclass::oid, c.ordinal_position) as comment
|
|
73
|
+
--, CASE WHEN fc.ftable IS NOT NULL THEN row_to_json((SELECT t FROM (SELECT fc.ftable, fc.fcols, fc.cols) t)) END as references
|
|
74
|
+
, fc.references
|
|
75
|
+
, c.is_identity = 'YES' OR EXISTS (
|
|
76
|
+
SELECT 1
|
|
77
|
+
FROM information_schema.table_constraints as tc
|
|
78
|
+
JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name AND tc.table_schema = kcu.table_schema
|
|
79
|
+
WHERE kcu.table_schema = c.table_schema AND kcu.table_name = c.table_name AND kcu.column_name = c.column_name AND tc.constraint_type IN ('PRIMARY KEY')
|
|
80
|
+
) as is_pkey
|
|
81
|
+
, c.ordinal_position
|
|
82
|
+
, COALESCE(c.column_default IS NOT NULL OR c.identity_generation = 'ALWAYS', false) as has_default
|
|
83
|
+
, c.column_default
|
|
84
|
+
, format('%I.%I', c.table_schema, c.table_name)::regclass::oid AS table_oid
|
|
85
|
+
, c.is_nullable
|
|
86
|
+
/* generated always and view columns cannot be updated */
|
|
87
|
+
, COALESCE(c.is_updatable, 'YES') = 'YES' AND COALESCE(c.is_generated, '') != 'ALWAYS' AND COALESCE(c.identity_generation, '') != 'ALWAYS' as is_updatable
|
|
88
|
+
, cp.privileges
|
|
89
|
+
FROM information_schema.columns c
|
|
90
|
+
LEFT JOIN (SELECT * FROM information_schema.element_types ) e
|
|
91
|
+
ON ((c.table_catalog, c.table_schema, c.table_name, 'TABLE', c.dtd_identifier)
|
|
92
|
+
= (e.object_catalog, e.object_schema, e.object_name, e.object_type, e.collection_type_identifier)
|
|
93
|
+
)
|
|
94
|
+
LEFT JOIN (
|
|
95
|
+
SELECT table_schema, table_name, column_name, json_agg(row_to_json((SELECT t FROM (SELECT cpp.privilege_type, cpp.is_grantable ) t))) as privileges
|
|
96
|
+
FROM information_schema.column_privileges cpp
|
|
97
|
+
GROUP BY table_schema, table_name, column_name
|
|
98
|
+
) cp
|
|
99
|
+
ON c.table_name = cp.table_name AND c.column_name = cp.column_name
|
|
100
|
+
LEFT JOIN (
|
|
101
|
+
--SELECT *
|
|
102
|
+
SELECT "table", unnest(ft.cols) as col, jsonb_agg(row_to_json((SELECT t FROM (SELECT ftable, fcols, cols) t))) as references
|
|
103
|
+
FROM (
|
|
104
|
+
SELECT
|
|
105
|
+
(SELECT r.relname from pg_class r where r.oid = c.conrelid) as table,
|
|
106
|
+
(SELECT array_agg(attname::text) from pg_attribute
|
|
107
|
+
where attrelid = c.conrelid and ARRAY[attnum] <@ c.conkey) as cols,
|
|
108
|
+
(SELECT array_agg(attname::text) from pg_attribute
|
|
109
|
+
where attrelid = c.confrelid and ARRAY[attnum] <@ c.confkey) as fcols,
|
|
110
|
+
(SELECT r.relname from pg_class r where r.oid = c.confrelid) as ftable
|
|
111
|
+
FROM pg_constraint c
|
|
112
|
+
) ft
|
|
113
|
+
WHERE ft.table IS NOT NULL
|
|
114
|
+
AND ft.ftable IS NOT NULL
|
|
115
|
+
-- c.confrelid = 'users'::regclass::oid
|
|
116
|
+
GROUP BY "table", unnest(cols)
|
|
117
|
+
) fc
|
|
118
|
+
ON fc.table = c.table_name
|
|
119
|
+
AND c.column_name::text = fc.col
|
|
120
|
+
) ccc
|
|
121
|
+
GROUP BY table_schema, table_name
|
|
122
|
+
) cc
|
|
123
|
+
ON t.table_name = cc.table_name
|
|
124
|
+
AND t.table_schema = cc.table_schema
|
|
125
|
+
LEFT JOIN (
|
|
126
|
+
SELECT cl_r.relname as view_name, array_agg(DISTINCT cl_d.relname) AS table_names
|
|
127
|
+
FROM pg_rewrite AS r
|
|
128
|
+
JOIN pg_class AS cl_r ON r.ev_class=cl_r.oid
|
|
129
|
+
JOIN pg_depend AS d ON r.oid=d.objid
|
|
130
|
+
JOIN pg_class AS cl_d ON d.refobjid=cl_d.oid
|
|
131
|
+
WHERE cl_d.relkind IN ('r','v')
|
|
132
|
+
AND cl_d.relname <> cl_r.relname
|
|
133
|
+
GROUP BY cl_r.relname
|
|
134
|
+
) vr
|
|
135
|
+
ON t.table_name = vr.view_name
|
|
136
|
+
GROUP BY t.table_schema, t.table_name, t.is_view, t.view_definition, vr.table_names , t.oid, cc.columns
|
|
137
|
+
ORDER BY schema, name
|
|
138
138
|
`;
|
|
139
139
|
let result = await db.any(query, { schema });
|
|
140
140
|
result = await Promise.all(result
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTablesForSchemaPostgresSQL.js","sourceRoot":"","sources":["../../lib/DboBuilder/getTablesForSchemaPostgresSQL.ts"],"names":[],"mappings":";;;AAEA,kEAAyD;AAEzD,uLAAuL;AAChL,KAAK,UAAU,6BAA6B,CAAC,EAAE,EAAE,EAAE,MAAM,EAAc,EAAE,MAAM,GAAG,QAAQ;IAC/F,MAAM,KAAK,GACT
|
|
1
|
+
{"version":3,"file":"getTablesForSchemaPostgresSQL.js","sourceRoot":"","sources":["../../lib/DboBuilder/getTablesForSchemaPostgresSQL.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
/// <reference types="node" />
|
|
3
|
-
import { S3 } from 'aws-sdk';
|
|
4
3
|
import * as stream from 'stream';
|
|
5
4
|
import { DB, DBHandlerServer, ExpressApp, Prostgles } from '../Prostgles';
|
|
6
5
|
import { ALLOWED_CONTENT_TYPE, ALLOWED_EXTENSION, ValidatedColumnInfo } from 'prostgles-types';
|
|
7
|
-
import AWS from 'aws-sdk';
|
|
8
6
|
export declare const HOUR: number;
|
|
9
7
|
export declare const asSQLIdentifier: (name: string, db: DB) => Promise<string>;
|
|
10
|
-
export type OnProgress = (progress:
|
|
8
|
+
export type OnProgress = (progress: {
|
|
9
|
+
total: number;
|
|
10
|
+
loaded: number;
|
|
11
|
+
}) => void;
|
|
11
12
|
export type ImageOptions = {
|
|
12
13
|
keepMetadata?: boolean;
|
|
13
14
|
compression?:
|
|
@@ -27,11 +28,24 @@ export type ImageOptions = {
|
|
|
27
28
|
};
|
|
28
29
|
};
|
|
29
30
|
};
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
type UploadedCloudFile = {
|
|
32
|
+
cloud_url: string;
|
|
33
|
+
etag: string;
|
|
34
|
+
content_length: number;
|
|
35
|
+
};
|
|
36
|
+
type FileUploadArgs = {
|
|
37
|
+
fileName: string;
|
|
38
|
+
contentType: string;
|
|
39
|
+
file: string | Buffer | stream.PassThrough;
|
|
40
|
+
onFinish: (error: any, result: UploadedCloudFile) => void;
|
|
41
|
+
onProgress?: (bytesUploaded: number) => void;
|
|
42
|
+
};
|
|
43
|
+
export type CloudClient = {
|
|
44
|
+
upload: (file: FileUploadArgs) => Promise<void>;
|
|
45
|
+
download: (fileName: string) => Promise<Buffer>;
|
|
46
|
+
downloadAsStream: (name: string) => Promise<stream.Readable>;
|
|
47
|
+
delete: (fileName: string) => Promise<void>;
|
|
48
|
+
getSignedUrlForDownload: (fileName: string, expiresInSeconds: number) => Promise<string>;
|
|
35
49
|
};
|
|
36
50
|
export type LocalConfig = {
|
|
37
51
|
/**
|
|
@@ -59,18 +73,17 @@ export type UploadedItem = {
|
|
|
59
73
|
filePath?: string;
|
|
60
74
|
etag: string;
|
|
61
75
|
/**
|
|
62
|
-
*
|
|
76
|
+
* Cloud url of the resource
|
|
63
77
|
*/
|
|
64
|
-
|
|
78
|
+
cloud_url?: string;
|
|
65
79
|
/**
|
|
66
80
|
* Total uploaded file size in bytes
|
|
67
81
|
*/
|
|
68
82
|
content_length: number;
|
|
69
83
|
};
|
|
70
84
|
export declare class FileManager {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
config: S3Config | LocalConfig;
|
|
85
|
+
cloudClient?: CloudClient;
|
|
86
|
+
config: CloudClient | LocalConfig;
|
|
74
87
|
imageOptions?: ImageOptions;
|
|
75
88
|
prostgles?: Prostgles;
|
|
76
89
|
get dbo(): DBHandlerServer;
|
|
@@ -81,7 +94,7 @@ export declare class FileManager {
|
|
|
81
94
|
private checkInterval?;
|
|
82
95
|
constructor(config: FileManager["config"], imageOptions?: ImageOptions);
|
|
83
96
|
getFileStream(name: string): Promise<stream.Readable>;
|
|
84
|
-
deleteFile(name: string): Promise<true |
|
|
97
|
+
deleteFile(name: string): Promise<true | void>;
|
|
85
98
|
parseFile: (args: {
|
|
86
99
|
file: string | Buffer;
|
|
87
100
|
fileName: string;
|
|
@@ -101,7 +114,7 @@ export declare class FileManager {
|
|
|
101
114
|
dissallowedExtensions?: Array<ALLOWED_EXTENSION>;
|
|
102
115
|
imageOptions?: ImageOptions;
|
|
103
116
|
}) => Promise<UploadedItem>;
|
|
104
|
-
|
|
117
|
+
getFileCloudDownloadURL(fileName: string, expiresInSeconds?: number): Promise<string | undefined>;
|
|
105
118
|
parseSQLIdentifier: (name: string) => Promise<string>;
|
|
106
119
|
getColInfo: (args: {
|
|
107
120
|
tableName: string;
|
|
@@ -120,24 +133,5 @@ export declare const getFileType: (file: Buffer | string, fileName: string) => P
|
|
|
120
133
|
ext: ALLOWED_EXTENSION;
|
|
121
134
|
}>;
|
|
122
135
|
export declare function bytesToSize(bytes: number): string;
|
|
123
|
-
|
|
124
|
-
*
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
// if(content_type && typeof content_type !== "string") throw "Invalid content_type provided";
|
|
128
|
-
// if(title && typeof title !== "string") throw "Invalid title provided";
|
|
129
|
-
// let fExt = name.split(".").pop()
|
|
130
|
-
// if(content_type && name.split(".").length > 1 && fExt && fExt.length <= 4){
|
|
131
|
-
// type = {
|
|
132
|
-
// mime: content_type,
|
|
133
|
-
// ext: fExt,
|
|
134
|
-
// fileName: name,
|
|
135
|
-
// }
|
|
136
|
-
// } else {
|
|
137
|
-
// type = await this.getMIME(data, name);//, ["png", "jpg", "ogg", "webm", "pdf", "doc"]);
|
|
138
|
-
// }
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
*/
|
|
136
|
+
export {};
|
|
143
137
|
//# sourceMappingURL=FileManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileManager.d.ts","sourceRoot":"","sources":["../../lib/FileManager/FileManager.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"FileManager.d.ts","sourceRoot":"","sources":["../../lib/FileManager/FileManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.bytesToSize = exports.getFileType = exports.getFileTypeFromFilename = exports.removeExpressRoute = exports.FileManager = exports.asSQLIdentifier = exports.HOUR = void 0;
|
|
4
|
-
const aws_sdk_1 = require("aws-sdk");
|
|
5
4
|
// import { PutObjectCommand, S3 } from "@aws-sdk/client-s3";
|
|
6
5
|
const fs = require("fs");
|
|
7
6
|
const sharp = require("sharp");
|
|
8
7
|
const check_disk_space_1 = require("check-disk-space");
|
|
9
8
|
const prostgles_types_1 = require("prostgles-types");
|
|
10
|
-
const aws_sdk_2 = require("aws-sdk");
|
|
11
9
|
const path = require("path");
|
|
12
10
|
const initFileManager_1 = require("./initFileManager");
|
|
13
11
|
const parseFile_1 = require("./parseFile");
|
|
@@ -19,22 +17,12 @@ const asSQLIdentifier = async (name, db) => {
|
|
|
19
17
|
};
|
|
20
18
|
exports.asSQLIdentifier = asSQLIdentifier;
|
|
21
19
|
class FileManager {
|
|
22
|
-
|
|
23
|
-
const sts = new aws_sdk_2.default.STS();
|
|
24
|
-
aws_sdk_2.default.config.credentials = {
|
|
25
|
-
accessKeyId,
|
|
26
|
-
secretAccessKey
|
|
27
|
-
};
|
|
28
|
-
const ident = await sts.getCallerIdentity({}).promise();
|
|
29
|
-
return ident;
|
|
30
|
-
};
|
|
31
|
-
s3Client;
|
|
20
|
+
cloudClient;
|
|
32
21
|
config;
|
|
33
22
|
imageOptions;
|
|
34
23
|
prostgles;
|
|
35
24
|
get dbo() {
|
|
36
25
|
if (!this.prostgles?.dbo) {
|
|
37
|
-
// this.prostgles?.refreshDBO();
|
|
38
26
|
throw "this.prostgles.dbo missing";
|
|
39
27
|
}
|
|
40
28
|
return this.prostgles.dbo;
|
|
@@ -53,12 +41,8 @@ class FileManager {
|
|
|
53
41
|
constructor(config, imageOptions) {
|
|
54
42
|
this.config = config;
|
|
55
43
|
this.imageOptions = imageOptions;
|
|
56
|
-
if ("
|
|
57
|
-
|
|
58
|
-
this.s3Client = new aws_sdk_1.S3({
|
|
59
|
-
region,
|
|
60
|
-
credentials: { accessKeyId, secretAccessKey },
|
|
61
|
-
});
|
|
44
|
+
if ("upload" in config) {
|
|
45
|
+
this.cloudClient = config;
|
|
62
46
|
}
|
|
63
47
|
const fullConfig = this.prostgles?.opts.fileTable;
|
|
64
48
|
if (fullConfig?.delayedDelete) {
|
|
@@ -78,8 +62,8 @@ class FileManager {
|
|
|
78
62
|
}
|
|
79
63
|
}
|
|
80
64
|
async getFileStream(name) {
|
|
81
|
-
if (
|
|
82
|
-
return this.
|
|
65
|
+
if (this.cloudClient) {
|
|
66
|
+
return this.cloudClient.downloadAsStream(name);
|
|
83
67
|
}
|
|
84
68
|
else if ("localFolderPath" in this.config) {
|
|
85
69
|
const filePath = path.resolve(`${this.config.localFolderPath}/${name}`);
|
|
@@ -92,8 +76,8 @@ class FileManager {
|
|
|
92
76
|
throw new Error("Not expected");
|
|
93
77
|
}
|
|
94
78
|
async deleteFile(name) {
|
|
95
|
-
if (
|
|
96
|
-
const res = await this.
|
|
79
|
+
if (this.cloudClient) {
|
|
80
|
+
const res = await this.cloudClient?.delete(name);
|
|
97
81
|
return res;
|
|
98
82
|
}
|
|
99
83
|
else if ("localFolderPath" in this.config) {
|
|
@@ -110,7 +94,7 @@ class FileManager {
|
|
|
110
94
|
parseFile = parseFile_1.parseFile.bind(this);
|
|
111
95
|
getLocalFileUrl = (name) => this.fileRoute ? `${this.fileRoute}/${name}` : "";
|
|
112
96
|
checkFreeSpace = async (folderPath, fileSize = 0) => {
|
|
113
|
-
if (!this.
|
|
97
|
+
if (!this.cloudClient && "localFolderPath" in this.config) {
|
|
114
98
|
const { minFreeBytes = 1.048e6 } = this.config;
|
|
115
99
|
const required = Math.max(fileSize, minFreeBytes);
|
|
116
100
|
if (required) {
|
|
@@ -172,13 +156,8 @@ class FileManager {
|
|
|
172
156
|
const res = await this.upload(_data, name, content_type);
|
|
173
157
|
return res;
|
|
174
158
|
};
|
|
175
|
-
async
|
|
176
|
-
|
|
177
|
-
Bucket: this.config.bucket,
|
|
178
|
-
Key: fileName,
|
|
179
|
-
Expires: Math.round(expiresInSeconds || 30 * 60) // Error if float
|
|
180
|
-
};
|
|
181
|
-
return await this.s3Client?.getSignedUrlPromise("getObject", params);
|
|
159
|
+
async getFileCloudDownloadURL(fileName, expiresInSeconds = 30 * 60) {
|
|
160
|
+
return await this.cloudClient?.getSignedUrlForDownload(fileName, expiresInSeconds);
|
|
182
161
|
}
|
|
183
162
|
parseSQLIdentifier = async (name) => (0, exports.asSQLIdentifier)(name, this.prostgles.db); // this.prostgles.dbo.sql<"value">("select format('%I', $1)", [name], { returnType: "value" } )
|
|
184
163
|
getColInfo = (args) => {
|
|
@@ -255,24 +234,4 @@ function bytesToSize(bytes) {
|
|
|
255
234
|
return (bytes / Math.pow(1024, i)).toFixed(1) + ' ' + sizes[i];
|
|
256
235
|
}
|
|
257
236
|
exports.bytesToSize = bytesToSize;
|
|
258
|
-
/**
|
|
259
|
-
*
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
// if(content_type && typeof content_type !== "string") throw "Invalid content_type provided";
|
|
263
|
-
// if(title && typeof title !== "string") throw "Invalid title provided";
|
|
264
|
-
// let fExt = name.split(".").pop()
|
|
265
|
-
// if(content_type && name.split(".").length > 1 && fExt && fExt.length <= 4){
|
|
266
|
-
// type = {
|
|
267
|
-
// mime: content_type,
|
|
268
|
-
// ext: fExt,
|
|
269
|
-
// fileName: name,
|
|
270
|
-
// }
|
|
271
|
-
// } else {
|
|
272
|
-
// type = await this.getMIME(data, name);//, ["png", "jpg", "ogg", "webm", "pdf", "doc"]);
|
|
273
|
-
// }
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
*/
|
|
278
237
|
//# sourceMappingURL=FileManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileManager.js","sourceRoot":"","sources":["../../lib/FileManager/FileManager.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"FileManager.js","sourceRoot":"","sources":["../../lib/FileManager/FileManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initFileManager.d.ts","sourceRoot":"","sources":["../../lib/FileManager/initFileManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAqB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"initFileManager.d.ts","sourceRoot":"","sources":["../../lib/FileManager/initFileManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAqB,MAAM,eAAe,CAAC;AAG/D,wBAAsB,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,iBAmOtE"}
|
|
@@ -41,7 +41,7 @@ async function initFileManager(prg) {
|
|
|
41
41
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
42
42
|
original_name TEXT NOT NULL,
|
|
43
43
|
description TEXT,
|
|
44
|
-
|
|
44
|
+
cloud_url TEXT,
|
|
45
45
|
signed_url TEXT,
|
|
46
46
|
signed_url_expires BIGINT,
|
|
47
47
|
etag TEXT,
|
|
@@ -179,12 +179,12 @@ async function initFileManager(prg) {
|
|
|
179
179
|
// }
|
|
180
180
|
throw "Invalid media";
|
|
181
181
|
}
|
|
182
|
-
if (this.
|
|
182
|
+
if (this.cloudClient) {
|
|
183
183
|
let url = media.signed_url;
|
|
184
184
|
const expires = +(media.signed_url_expires || 0);
|
|
185
185
|
const EXPIRES = Date.now() + FileManager_1.HOUR;
|
|
186
186
|
if (!url || expires < EXPIRES) {
|
|
187
|
-
url = await this.
|
|
187
|
+
url = await this.getFileCloudDownloadURL(media.name, 60 * 60);
|
|
188
188
|
await mediaTable.update({ name }, { signed_url: url, signed_url_expires: EXPIRES });
|
|
189
189
|
}
|
|
190
190
|
res.redirect(url);
|