prostgles-server 4.2.105 → 4.2.106

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 (59) hide show
  1. package/dist/DBSchemaBuilder.d.ts +3 -3
  2. package/dist/DBSchemaBuilder.d.ts.map +1 -1
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +2 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/typeTests/dboTypeCheck.d.ts +2 -0
  7. package/dist/typeTests/dboTypeCheck.d.ts.map +1 -0
  8. package/dist/typeTests/dboTypeCheck.js +54 -0
  9. package/dist/typeTests/dboTypeCheck.js.map +1 -0
  10. package/lib/DBSchemaBuilder.ts +4 -4
  11. package/lib/index.ts +3 -0
  12. package/lib/typeTests/DBoGenerated.d.ts +320 -0
  13. package/lib/typeTests/dboTypeCheck.ts +81 -0
  14. package/package.json +1 -1
  15. package/tests/server/index.ts +0 -11
  16. package/tests/server/package-lock.json +1 -1
  17. package/dist/DboBuilder/QueryBuilder/prepareHaving.d.ts +0 -11
  18. package/dist/DboBuilder/QueryBuilder/prepareHaving.d.ts.map +0 -1
  19. package/dist/DboBuilder/QueryBuilder/prepareHaving.js +0 -18
  20. package/dist/DboBuilder/QueryBuilder/prepareHaving.js.map +0 -1
  21. package/dist/DboBuilder/ViewHandler/ColSet.d.ts +0 -16
  22. package/dist/DboBuilder/ViewHandler/ColSet.d.ts.map +0 -1
  23. package/dist/DboBuilder/ViewHandler/ColSet.js +0 -105
  24. package/dist/DboBuilder/ViewHandler/ColSet.js.map +0 -1
  25. package/dist/DboBuilder/find.d.ts +0 -18
  26. package/dist/DboBuilder/find.d.ts.map +0 -1
  27. package/dist/DboBuilder/find.js +0 -121
  28. package/dist/DboBuilder/find.js.map +0 -1
  29. package/dist/DboBuilder/insertDataParse.d.ts +0 -27
  30. package/dist/DboBuilder/insertDataParse.d.ts.map +0 -1
  31. package/dist/DboBuilder/insertDataParse.js +0 -275
  32. package/dist/DboBuilder/insertDataParse.js.map +0 -1
  33. package/dist/DboBuilder/parseMediaOrNestedInsert.d.ts +0 -29
  34. package/dist/DboBuilder/parseMediaOrNestedInsert.d.ts.map +0 -1
  35. package/dist/DboBuilder/parseMediaOrNestedInsert.js +0 -271
  36. package/dist/DboBuilder/parseMediaOrNestedInsert.js.map +0 -1
  37. package/dist/DboBuilder/subscribe.d.ts +0 -20
  38. package/dist/DboBuilder/subscribe.d.ts.map +0 -1
  39. package/dist/DboBuilder/subscribe.js +0 -96
  40. package/dist/DboBuilder/subscribe.js.map +0 -1
  41. package/dist/DboBuilder.d.ts +0 -324
  42. package/dist/DboBuilder.d.ts.map +0 -1
  43. package/dist/DboBuilder.js +0 -345
  44. package/dist/DboBuilder.js.map +0 -1
  45. package/dist/PubSubManager/getInitQuery.d.ts +0 -13
  46. package/dist/PubSubManager/getInitQuery.d.ts.map +0 -1
  47. package/dist/PubSubManager/getInitQuery.js +0 -616
  48. package/dist/PubSubManager/getInitQuery.js.map +0 -1
  49. package/dist/SchemaWatch/SCHEMA_WATCH_QUERIES.d.ts +0 -2
  50. package/dist/SchemaWatch/SCHEMA_WATCH_QUERIES.d.ts.map +0 -1
  51. package/dist/SchemaWatch/SCHEMA_WATCH_QUERIES.js +0 -53
  52. package/dist/SchemaWatch/SCHEMA_WATCH_QUERIES.js.map +0 -1
  53. package/dist/SchemaWatch.d.ts +0 -30
  54. package/dist/SchemaWatch.d.ts.map +0 -1
  55. package/dist/SchemaWatch.js +0 -127
  56. package/dist/SchemaWatch.js.map +0 -1
  57. package/dist/my.d copy.ts +0 -1020
  58. package/dist/my.d.ts +0 -1655
  59. package/tests/server/dboTypeCheck.ts +0 -34
@@ -1,324 +0,0 @@
1
- import { QueryStreamer } from "./DboBuilder/QueryStreamer";
2
- import * as pgPromise from 'pg-promise';
3
- import { AnyObject, ColumnInfo, DbJoinMaker, EXISTS_KEY, PG_COLUMN_UDT_DATA_TYPE, ProstglesError, RawJoinPath, SQLHandler, SQLOptions, TableInfo as TInfo, TS_PG_Types } from "prostgles-types";
4
- import pg = require('pg-promise/typescript/pg-subset');
5
- export type SortItem = {
6
- asc: boolean;
7
- nulls?: "first" | "last";
8
- nullEmpty?: boolean;
9
- key: string;
10
- nested?: {
11
- table: string;
12
- selectItemAlias: string;
13
- isNumeric: boolean;
14
- wrapperQuerySortItem: string;
15
- joinAlias: string;
16
- };
17
- } & ({
18
- type: "query";
19
- fieldQuery: string;
20
- } | {
21
- type: "position";
22
- fieldPosition: number;
23
- });
24
- export type Media = {
25
- id?: string;
26
- title?: string;
27
- extension?: string;
28
- content_type?: string;
29
- content_length?: number;
30
- url?: string;
31
- added?: Date;
32
- signed_url?: string;
33
- signed_url_expires?: number;
34
- name?: string;
35
- original_name?: string;
36
- etag?: string;
37
- deleted?: string | null;
38
- deleted_from_storage?: string | null;
39
- };
40
- export type ParsedMedia = Required<Pick<Media, "extension" | "content_type">>;
41
- export type TxCB<TH = DbTxTableHandlers> = {
42
- (t: TH & Pick<DBHandlerServer, "sql">, _t: pgPromise.ITask<{}>): (any | void);
43
- };
44
- export type TX<TH = TableHandlers> = {
45
- (t: TxCB<TH>): Promise<(any | void)>;
46
- };
47
- export type TableHandlers = {
48
- [key: string]: Partial<TableHandler> | TableHandler;
49
- };
50
- export type DbTxTableHandlers = {
51
- [key: string]: Omit<Partial<TableHandler>, "dbTx"> | Omit<TableHandler, "dbTx">;
52
- };
53
- export type DBHandlerServer<TH = TableHandlers> = TH & Partial<DbJoinMaker> & {
54
- sql?: SQLHandler;
55
- } & {
56
- tx?: TX<TH>;
57
- };
58
- import { FieldSpec } from "./DboBuilder/QueryBuilder/Functions";
59
- import { JoinPaths, ViewHandler } from "./DboBuilder/ViewHandler/ViewHandler";
60
- import { DB, Join, Prostgles } from "./Prostgles";
61
- import { BasicCallback, PubSubManager } from "./PubSubManager/PubSubManager";
62
- import { PublishAllOrNothing, PublishParser } from "./PublishParser/PublishParser";
63
- type PGP = pgPromise.IMain<{}, pg.IClient>;
64
- export declare const pgp: PGP;
65
- export type TableInfo = TInfo & {
66
- schema: string;
67
- name: string;
68
- oid: number;
69
- comment: string;
70
- columns: ColumnInfo[];
71
- };
72
- export type ViewInfo = TableInfo & {
73
- parent_tables: string[];
74
- };
75
- export type TableOrViewInfo = TableInfo & ViewInfo & {
76
- is_view: boolean;
77
- };
78
- export type PRGLIOSocket = {
79
- readonly id: string;
80
- readonly handshake: {
81
- query?: Record<string, string | string[] | undefined>;
82
- /**
83
- * IP Address
84
- */
85
- address: string;
86
- headers?: AnyObject & {
87
- cookie?: string;
88
- };
89
- auth?: Record<string, any>;
90
- };
91
- readonly on: (channel: string, params: any, cb?: (err: any, res?: any) => void) => any;
92
- readonly emit: (channel: string, message?: any, cb?: BasicCallback) => any;
93
- readonly once: (channel: string, cb: (_data: any, cb: BasicCallback) => void) => void;
94
- readonly removeAllListeners: (channel: string) => void;
95
- readonly disconnect: () => void;
96
- readonly request: {
97
- url?: string;
98
- connection: {
99
- remoteAddress?: string;
100
- };
101
- };
102
- /** Used for session caching */
103
- __prglCache?: {
104
- session: BasicSession;
105
- user: UserLike;
106
- clientUser: AnyObject;
107
- };
108
- _user?: AnyObject;
109
- /** Used for publish error caching */
110
- prostgles?: AnyObject;
111
- };
112
- export type LocalParams = {
113
- httpReq?: ExpressReq;
114
- socket?: PRGLIOSocket;
115
- func?: () => any;
116
- isRemoteRequest?: {
117
- user?: UserLike | undefined;
118
- };
119
- testRule?: boolean;
120
- tableAlias?: string;
121
- tx?: {
122
- dbTX: TableHandlers;
123
- t: pgPromise.ITask<{}>;
124
- };
125
- returnQuery?: boolean | "noRLS" | "where-condition";
126
- returnNewQuery?: boolean;
127
- /** Used for count/size queries */
128
- bypassLimit?: boolean;
129
- nestedInsert?: {
130
- depth: number;
131
- previousData: AnyObject;
132
- previousTable: string;
133
- referencingColumn?: string;
134
- };
135
- };
136
- export declare function escapeTSNames(str: string, capitalize?: boolean): string;
137
- export type Aggregation = {
138
- field: string;
139
- query: string;
140
- alias: string;
141
- getQuery: (alias: string) => string;
142
- };
143
- export type Filter = AnyObject | {
144
- $and: Filter[];
145
- } | {
146
- $or: Filter[];
147
- };
148
- export type JoinInfo = {
149
- /**
150
- * If true then all joins involve unique columns and the result is a 1 to 1 join
151
- */
152
- expectOne?: boolean;
153
- paths: {
154
- /**
155
- * The table that JOIN ON columns refer to.
156
- * columns in index = 1 refer to this table. index = 0 columns refer to previous JoinInfo.table
157
- */
158
- table: string;
159
- /**
160
- * Source and target JOIN ON column groups for each existing constraint
161
- * Each inner array group will be combined with AND and outer arrays with OR to allow multiple references to the same table
162
- * e.g.: [[source_table_column: string, table_column: string]]
163
- */
164
- on: [string, string][][];
165
- /**
166
- * Source table name
167
- */
168
- source: string;
169
- /**
170
- * Target table name
171
- */
172
- target: string;
173
- }[];
174
- };
175
- import { Graph } from "./shortestPath";
176
- export type CommonTableRules = {
177
- /**
178
- * True by default. Allows clients to get column information on any columns that are allowed in (select, insert, update) field rules.
179
- */
180
- getColumns?: PublishAllOrNothing;
181
- /**
182
- * True by default. Allows clients to get table information (oid, comment, label, has_media).
183
- */
184
- getInfo?: PublishAllOrNothing;
185
- };
186
- export type ValidatedTableRules = CommonTableRules & {
187
- allColumns: FieldSpec[];
188
- select: {
189
- fields: string[];
190
- orderByFields: string[];
191
- filterFields: string[];
192
- forcedFilter: any;
193
- maxLimit: number | null;
194
- };
195
- update: {
196
- fields: string[];
197
- returningFields: string[];
198
- filterFields: string[];
199
- forcedFilter: any;
200
- forcedData: any;
201
- };
202
- insert: {
203
- fields: string[];
204
- returningFields: string[];
205
- forcedData: any;
206
- };
207
- delete: {
208
- filterFields: string[];
209
- forcedFilter: any;
210
- returningFields: string[];
211
- };
212
- };
213
- export declare function makeErrorFromPGError(err: any, localParams?: LocalParams, view?: ViewHandler, allowedKeys?: string[]): Promise<never>;
214
- /**
215
- * Ensure the error is a serializable Object
216
- */
217
- export declare function parseError(e: any, caller: string): ProstglesError;
218
- export type ExistsFilterConfig = {
219
- existType: EXISTS_KEY;
220
- /**
221
- * Target table filter. target table is the last table from tables
222
- */
223
- targetTableFilter: Filter;
224
- } & ({
225
- isJoined: true;
226
- /**
227
- * list of join tables in their order
228
- * If table path starts with "**" then get shortest join to first table
229
- * e.g.: "**.users" means finding the shortest join from root table to users table
230
- */
231
- path: RawJoinPath;
232
- parsedPath: ParsedJoinPath[];
233
- } | {
234
- isJoined: false;
235
- targetTable: string;
236
- });
237
- type OidInfo = {
238
- /**
239
- * Oid
240
- */
241
- relid: number;
242
- relname: string;
243
- schemaname: string;
244
- };
245
- type TableOidInfo = OidInfo & {
246
- pkey_columns: string[] | null;
247
- };
248
- type TableOidColumnInfo = OidInfo & {
249
- column_name: string;
250
- udt_name: string;
251
- ordinal_position: number;
252
- };
253
- import { BasicSession, ExpressReq, UserLike } from "./AuthHandler";
254
- import { TableHandler } from "./DboBuilder/TableHandler/TableHandler";
255
- import { ParsedJoinPath } from "./DboBuilder/ViewHandler/parseJoinPath";
256
- import { TableSchema } from "./DboBuilder/DboBuilderTypes";
257
- export declare class DboBuilder {
258
- tablesOrViews?: TableSchema[];
259
- /**
260
- * Used in obtaining column names for error messages
261
- */
262
- constraints?: PGConstraint[];
263
- db: DB;
264
- dbo: DBHandlerServer;
265
- _pubSubManager?: PubSubManager;
266
- /**
267
- * Used for db.sql field type details
268
- */
269
- DATA_TYPES: {
270
- oid: string;
271
- typname: PG_COLUMN_UDT_DATA_TYPE;
272
- }[] | undefined;
273
- USER_TABLES: TableOidInfo[] | undefined;
274
- USER_TABLE_COLUMNS: TableOidColumnInfo[] | undefined;
275
- queryStreamer: QueryStreamer;
276
- getPubSubManager: () => Promise<PubSubManager>;
277
- tsTypesDefinition?: string;
278
- joinGraph?: Graph;
279
- private shortestJoinPaths;
280
- prostgles: Prostgles;
281
- publishParser?: PublishParser;
282
- onSchemaChange?: (event: {
283
- command: string;
284
- query: string;
285
- }) => void;
286
- private constructor();
287
- private init;
288
- static create: (prostgles: Prostgles) => Promise<DboBuilder>;
289
- destroy(): void;
290
- _joins?: Join[];
291
- get joins(): Join[];
292
- set joins(j: Join[]);
293
- getAllJoinPaths(): JoinPaths;
294
- prepareShortestJoinPaths: () => Promise<void>;
295
- runSQL: (query: string, params: any, options: SQLOptions | undefined, localParams?: LocalParams) => Promise<any>;
296
- build(): Promise<DBHandlerServer>;
297
- getShortestJoinPath: (viewHandler: ViewHandler, target: string) => JoinPaths[number] | undefined;
298
- getTX: (cb: TxCB) => Promise<any>;
299
- }
300
- type PGConstraint = {
301
- /**
302
- * Constraint type
303
- */
304
- contype: "u" | "p" | "c";
305
- /**
306
- * Column ordinal positions
307
- */
308
- conkey: number[];
309
- /**
310
- * Constraint name
311
- */
312
- conname: string;
313
- /**
314
- * Table name
315
- */
316
- relname: string;
317
- };
318
- export declare function isPlainObject(o: any): o is Record<string, any>;
319
- export declare function postgresToTsType(udt_data_type: PG_COLUMN_UDT_DATA_TYPE): keyof typeof TS_PG_Types;
320
- export declare const prepareOrderByQuery: (items: SortItem[], tableAlias?: string) => string[];
321
- export declare const canEXECUTE: (db: DB) => Promise<boolean>;
322
- export declare const withUserRLS: (localParams: LocalParams | undefined, query: string) => string;
323
- export {};
324
- //# sourceMappingURL=DboBuilder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DboBuilder.d.ts","sourceRoot":"","sources":["../lib/DboBuilder.ts"],"names":[],"mappings":"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"}
@@ -1,345 +0,0 @@
1
- "use strict";
2
- /*---------------------------------------------------------------------------------------------
3
- * Copyright (c) Stefan L. All rights reserved.
4
- * Licensed under the MIT License. See LICENSE in the project root for license information.
5
- *--------------------------------------------------------------------------------------------*/
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.withUserRLS = exports.canEXECUTE = exports.prepareOrderByQuery = exports.postgresToTsType = exports.isPlainObject = exports.DboBuilder = exports.parseError = exports.makeErrorFromPGError = exports.escapeTSNames = exports.pgp = void 0;
8
- const Bluebird = require("bluebird");
9
- const QueryStreamer_1 = require("./DboBuilder/QueryStreamer");
10
- const pgPromise = require("pg-promise");
11
- const prostgles_types_1 = require("prostgles-types");
12
- const getTablesForSchemaPostgresSQL_1 = require("./DboBuilder/getTablesForSchemaPostgresSQL");
13
- const runSQL_1 = require("./DboBuilder/runSQL");
14
- const sqlErrCodeToMsg_1 = require("./DboBuilder/sqlErrCodeToMsg");
15
- const ViewHandler_1 = require("./DboBuilder/ViewHandler/ViewHandler");
16
- const PubSubManager_1 = require("./PubSubManager/PubSubManager");
17
- const utils_1 = require("./utils");
18
- exports.pgp = pgPromise({
19
- promiseLib: Bluebird
20
- // ,query: function (e) { console.log({psql: e.query, params: e.params}); }
21
- });
22
- function escapeTSNames(str, capitalize = false) {
23
- let res = str;
24
- res = (capitalize ? str[0]?.toUpperCase() : str[0]) + str.slice(1);
25
- if (canBeUsedAsIsInTypescript(res))
26
- return res;
27
- return JSON.stringify(res);
28
- }
29
- exports.escapeTSNames = escapeTSNames;
30
- /* DEBUG CLIENT ERRORS HERE */
31
- function makeErrorFromPGError(err, localParams, view, allowedKeys) {
32
- if (process.env.PRGL_DEBUG) {
33
- console.trace(err);
34
- }
35
- const errObject = {
36
- ...((!localParams || !localParams.socket) ? err : {}),
37
- ...(0, PubSubManager_1.pickKeys)(err, ["column", "code", "table", "constraint", "hint"]),
38
- ...(err && err.toString ? { txt: err.toString() } : {}),
39
- code_info: (0, sqlErrCodeToMsg_1.sqlErrCodeToMsg)(err.code)
40
- };
41
- if (view?.dboBuilder?.constraints && errObject.constraint && !errObject.column) {
42
- const constraint = view.dboBuilder.constraints
43
- .find(c => c.conname === errObject.constraint && c.relname === view.name);
44
- if (constraint) {
45
- const cols = view.columns.filter(c => (!allowedKeys || allowedKeys.includes(c.name)) &&
46
- constraint.conkey.includes(c.ordinal_position));
47
- const [firstCol] = cols;
48
- if (firstCol) {
49
- errObject.column = firstCol.name;
50
- errObject.columns = cols.map(c => c.name);
51
- }
52
- }
53
- }
54
- return Promise.reject(errObject);
55
- }
56
- exports.makeErrorFromPGError = makeErrorFromPGError;
57
- /**
58
- * Ensure the error is a serializable Object
59
- */
60
- function parseError(e, caller) {
61
- const errorObject = (0, prostgles_types_1.isObject)(e) ? e : undefined;
62
- const message = typeof e === "string" ? e : e instanceof Error ? e.message :
63
- (0, prostgles_types_1.isObject)(errorObject) ? (errorObject.message ?? errorObject.txt ?? JSON.stringify(errorObject) ?? "") : "";
64
- const stack = [
65
- ...(errorObject && Array.isArray(errorObject.stack) ? errorObject.stack : []),
66
- caller
67
- ];
68
- const result = {
69
- ...errorObject,
70
- message,
71
- stack,
72
- };
73
- return result;
74
- }
75
- exports.parseError = parseError;
76
- const DBSchemaBuilder_1 = require("./DBSchemaBuilder");
77
- const QueryBuilder_1 = require("./DboBuilder/QueryBuilder/QueryBuilder");
78
- const TableHandler_1 = require("./DboBuilder/TableHandler/TableHandler");
79
- const parseJoinPath_1 = require("./DboBuilder/ViewHandler/parseJoinPath");
80
- const prepareShortestJoinPaths_1 = require("./DboBuilder/prepareShortestJoinPaths");
81
- class DboBuilder {
82
- tablesOrViews;
83
- /**
84
- * Used in obtaining column names for error messages
85
- */
86
- constraints;
87
- db;
88
- dbo;
89
- _pubSubManager;
90
- /**
91
- * Used for db.sql field type details
92
- */
93
- DATA_TYPES;
94
- USER_TABLES;
95
- USER_TABLE_COLUMNS;
96
- queryStreamer;
97
- getPubSubManager = async () => {
98
- if (!this._pubSubManager) {
99
- let onSchemaChange;
100
- const { isSuperUs } = await PubSubManager_1.PubSubManager.canCreate(this.db);
101
- if (!exports.canEXECUTE)
102
- throw "PubSubManager based subscriptions not possible: Cannot run EXECUTE statements on this connection";
103
- if (this.prostgles.opts.watchSchema && this.prostgles.opts.watchSchemaType === "DDL_trigger") {
104
- if (!isSuperUs) {
105
- console.warn(`watchSchemaType "${this.prostgles.opts.watchSchemaType}" cannot be used because db user is not a superuser. Will fallback to watchSchemaType "prostgles_queries" `);
106
- }
107
- else {
108
- onSchemaChange = (event) => {
109
- this.prostgles.onSchemaChange(event);
110
- };
111
- }
112
- }
113
- this._pubSubManager = await PubSubManager_1.PubSubManager.create({
114
- dboBuilder: this,
115
- onSchemaChange
116
- });
117
- }
118
- if (!this._pubSubManager) {
119
- console.trace("Could not create this._pubSubManager");
120
- throw "Could not create this._pubSubManager";
121
- }
122
- return this._pubSubManager;
123
- };
124
- tsTypesDefinition;
125
- joinGraph;
126
- shortestJoinPaths = [];
127
- prostgles;
128
- publishParser;
129
- onSchemaChange;
130
- constructor(prostgles) {
131
- this.prostgles = prostgles;
132
- if (!this.prostgles.db)
133
- throw "db missing";
134
- this.db = this.prostgles.db;
135
- this.dbo = {};
136
- this.queryStreamer = new QueryStreamer_1.QueryStreamer(this.db);
137
- this.queryStreamer.startQuery({ id: "1", socketId: "1", query: "", onData: console.log });
138
- }
139
- init = async () => {
140
- /* If watchSchema then PubSubManager must be created (if possible) */
141
- await this.build();
142
- if (this.prostgles.opts.watchSchema &&
143
- (this.prostgles.opts.watchSchemaType === "DDL_trigger" || !this.prostgles.opts.watchSchemaType) &&
144
- this.prostgles.isSuperUser) {
145
- await this.getPubSubManager();
146
- }
147
- return this;
148
- };
149
- static create = async (prostgles) => {
150
- const res = new DboBuilder(prostgles);
151
- return await res.init();
152
- };
153
- destroy() {
154
- this._pubSubManager?.destroy();
155
- }
156
- _joins;
157
- get joins() {
158
- return (0, utils_1.clone)(this._joins ?? []).filter(j => j.tables[0] !== j.tables[1]);
159
- }
160
- set joins(j) {
161
- this._joins = (0, utils_1.clone)(j);
162
- }
163
- getAllJoinPaths() {
164
- return this.shortestJoinPaths;
165
- }
166
- prepareShortestJoinPaths = async () => {
167
- const { joins, shortestJoinPaths, joinGraph } = await (0, prepareShortestJoinPaths_1.prepareShortestJoinPaths)(this);
168
- this.joinGraph = joinGraph;
169
- this.joins = joins;
170
- this.shortestJoinPaths = shortestJoinPaths;
171
- };
172
- runSQL = async (query, params, options, localParams) => {
173
- return runSQL_1.runSQL.bind(this)(query, params, options, localParams);
174
- };
175
- async build() {
176
- const start = Date.now();
177
- const tablesOrViewsReq = await (0, getTablesForSchemaPostgresSQL_1.getTablesForSchemaPostgresSQL)(this, this.prostgles.opts.schema);
178
- await this.prostgles.opts.onLog?.({
179
- type: "debug",
180
- command: "DboBuilder.getTablesForSchemaPostgresSQL",
181
- data: tablesOrViewsReq.durations,
182
- duration: Date.now() - start,
183
- });
184
- this.tablesOrViews = tablesOrViewsReq.result;
185
- this.constraints = await getConstraints(this.db, this.prostgles.opts.schema);
186
- await this.prepareShortestJoinPaths();
187
- this.dbo = {};
188
- this.tablesOrViews.map(tov => {
189
- const columnsForTypes = tov.columns.slice(0).sort((a, b) => a.name.localeCompare(b.name));
190
- const filterKeywords = Object.values(this.prostgles.keywords);
191
- const $filterCol = columnsForTypes.find(c => filterKeywords.includes(c.name));
192
- if ($filterCol) {
193
- throw `DboBuilder init error: \n\nTable ${JSON.stringify(tov.name)} column ${JSON.stringify($filterCol.name)} is colliding with Prostgles filtering functionality ($filter keyword)
194
- Please provide a replacement keyword name using the $filter_keyName init option.
195
- Alternatively you can rename the table column\n`;
196
- }
197
- this.dbo[tov.escaped_identifier] = new (tov.is_view ? ViewHandler_1.ViewHandler : TableHandler_1.TableHandler)(this.db, tov, this, undefined, this.shortestJoinPaths);
198
- if (this.shortestJoinPaths && this.shortestJoinPaths.find(jp => [jp.t1, jp.t2].includes(tov.name))) {
199
- const table = tov.name;
200
- this.dbo.innerJoin ??= {};
201
- this.dbo.leftJoin ??= {};
202
- this.dbo.innerJoinOne ??= {};
203
- this.dbo.leftJoinOne ??= {};
204
- const joinHandlers = (0, prostgles_types_1.getJoinHandlers)(table);
205
- this.dbo.leftJoin[table] = joinHandlers.leftJoin;
206
- this.dbo.innerJoin[table] = joinHandlers.innerJoin;
207
- this.dbo.leftJoinOne[table] = joinHandlers.leftJoinOne;
208
- this.dbo.innerJoinOne[table] = joinHandlers.innerJoinOne;
209
- }
210
- });
211
- if (this.prostgles.opts.transactions) {
212
- let txKey = "tx";
213
- if (typeof this.prostgles.opts.transactions === "string")
214
- txKey = this.prostgles.opts.transactions;
215
- this.dbo[txKey] = (cb) => this.getTX(cb);
216
- }
217
- if (!this.dbo.sql) {
218
- this.dbo.sql = this.runSQL;
219
- }
220
- else {
221
- console.warn(`Could not create dbo.sql handler because there is already a table named "sql"`);
222
- }
223
- this.tsTypesDefinition = [
224
- `/* SCHEMA DEFINITON. Table names have been altered to work with Typescript */`,
225
- `/* DBO Definition */`,
226
- (0, DBSchemaBuilder_1.getDBSchema)(this)
227
- ].join("\n");
228
- return this.dbo;
229
- }
230
- getShortestJoinPath = (viewHandler, target) => {
231
- const source = viewHandler.name;
232
- if (source === target) {
233
- const joinPath = (0, parseJoinPath_1.parseJoinPath)({
234
- rawPath: target,
235
- rootTable: source,
236
- viewHandler
237
- });
238
- if (!joinPath)
239
- return undefined;
240
- return {
241
- t1: source,
242
- t2: target,
243
- path: [source]
244
- };
245
- }
246
- const jp = this.shortestJoinPaths.find(jp => jp.t1 === source && jp.t2 === target);
247
- return jp;
248
- };
249
- getTX = (cb) => {
250
- return this.db.tx(t => {
251
- const dbTX = {};
252
- this.tablesOrViews?.map(tov => {
253
- dbTX[tov.name] = new (tov.is_view ? ViewHandler_1.ViewHandler : TableHandler_1.TableHandler)(this.db, tov, this, { t, dbTX }, this.shortestJoinPaths);
254
- });
255
- // ???? getKeys(dbTX).map(k => {
256
- // dbTX[k]!.dbTX = dbTX;
257
- // });
258
- dbTX.sql = (q, args, opts, localP) => this.runSQL(q, args, opts, { tx: { dbTX, t }, ...(localP ?? {}) });
259
- return cb(dbTX, t);
260
- });
261
- };
262
- }
263
- exports.DboBuilder = DboBuilder;
264
- async function getConstraints(db, schema) {
265
- const { sql, schemaNames } = (0, getTablesForSchemaPostgresSQL_1.getSchemaFilter)(schema);
266
- return db.any(`
267
- SELECT rel.relname, con.conkey, con.conname, con.contype
268
- FROM pg_catalog.pg_constraint con
269
- INNER JOIN pg_catalog.pg_class rel
270
- ON rel.oid = con.conrelid
271
- INNER JOIN pg_catalog.pg_namespace nsp
272
- ON nsp.oid = connamespace
273
- WHERE nsp.nspname ${sql}
274
- `, { schemaNames });
275
- }
276
- function isPlainObject(o) {
277
- return Object(o) === o && Object.getPrototypeOf(o) === Object.prototype;
278
- }
279
- exports.isPlainObject = isPlainObject;
280
- function postgresToTsType(udt_data_type) {
281
- return (0, prostgles_types_1.getKeys)(prostgles_types_1.TS_PG_Types).find(k => {
282
- // @ts-ignore
283
- return prostgles_types_1.TS_PG_Types[k].includes(udt_data_type);
284
- }) ?? "any";
285
- }
286
- exports.postgresToTsType = postgresToTsType;
287
- const prepareOrderByQuery = (items, tableAlias) => {
288
- if (!items.length)
289
- return [];
290
- return ["ORDER BY " + items.map(d => {
291
- const orderType = d.asc ? " ASC " : " DESC ";
292
- const nullOrder = d.nulls ? ` NULLS ${d.nulls === "first" ? " FIRST " : " LAST "}` : "";
293
- if (d.type === "query" && d.nested) {
294
- return d.fieldQuery;
295
- }
296
- return `${(0, QueryBuilder_1.asNameAlias)(d.key, tableAlias)} ${orderType} ${nullOrder}`;
297
- }).join(", ")];
298
- };
299
- exports.prepareOrderByQuery = prepareOrderByQuery;
300
- const canEXECUTE = async (db) => {
301
- try {
302
- await db.any(`DO $$ BEGIN EXECUTE 'select 1'; END $$;`);
303
- return true;
304
- }
305
- catch (error) {
306
- console.warn(error);
307
- }
308
- return false;
309
- };
310
- exports.canEXECUTE = canEXECUTE;
311
- const withUserRLS = (localParams, query) => {
312
- const user = localParams?.isRemoteRequest?.user;
313
- const queryPrefix = `SET SESSION "prostgles.user" \nTO`;
314
- let firstQuery = `${queryPrefix} '';`;
315
- if (user) {
316
- firstQuery = exports.pgp.as.format(`${queryPrefix} \${user};`, { user });
317
- }
318
- return [firstQuery, query].join("\n");
319
- };
320
- exports.withUserRLS = withUserRLS;
321
- function canBeUsedAsIsInTypescript(str) {
322
- if (!str)
323
- return false;
324
- const isAlphaNumericOrUnderline = str.match(/^[a-z0-9_]+$/i);
325
- const startsWithCharOrUnderscore = str[0]?.match(/^[a-z_]+$/i);
326
- return Boolean(isAlphaNumericOrUnderline && startsWithCharOrUnderscore);
327
- }
328
- function snakify(str, capitalize = false) {
329
- return str.split("").map((c, i) => {
330
- if (!i) {
331
- if (capitalize)
332
- c = c.toUpperCase();
333
- if (c.match(/[^a-z_A-Z]/)) {
334
- return ((capitalize) ? "D_" : "_") + c.charCodeAt(0);
335
- }
336
- }
337
- else {
338
- if (c.match(/[^a-zA-Z_0-9]/)) {
339
- return "_" + c.charCodeAt(0);
340
- }
341
- }
342
- return c;
343
- }).join("");
344
- }
345
- //# sourceMappingURL=DboBuilder.js.map