@saltcorn/postgres 1.6.0 → 1.7.0-alpha.0

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.
@@ -0,0 +1,6 @@
1
+ /**
2
+ * This is the postgres package
3
+ * @module
4
+ */
5
+ export * from "./postgres.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,cAAc,eAAe,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ // For the typedoc documentation
2
+ /**
3
+ * This is the postgres package
4
+ * @module
5
+ */
6
+ export * from "./postgres.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC;;;GAGG;AACH,cAAc,eAAe,CAAC"}
@@ -0,0 +1,286 @@
1
+ /**
2
+ * PostgreSQL data access layer
3
+ * @category postgres
4
+ * @module postgres
5
+ */
6
+ import { Pool } from "pg";
7
+ import type { PoolClient } from "pg";
8
+ import { mkWhere } from "@saltcorn/db-common/internal";
9
+ import type { Where, SelectOptions, Row } from "@saltcorn/db-common/internal";
10
+ export declare let pool: Pool | null;
11
+ /**
12
+ * Control Logging sql statements to console
13
+ * @param {boolean} [val = true] - if true then log sql statements to console
14
+ */
15
+ export declare function set_sql_logging(val?: boolean): void;
16
+ /**
17
+ * Get sql logging state
18
+ * @returns {boolean} if true then sql logging eabled
19
+ */
20
+ export declare function get_sql_logging(): boolean;
21
+ /**
22
+ * Log SQL statement to console
23
+ * @param {string} sql - SQL statement
24
+ * @param {object} [vs] - any additional parameter
25
+ */
26
+ export declare function sql_log(sql: string, vs?: any): void;
27
+ /**
28
+ * Close database connection
29
+ * @returns {Promise<void>}
30
+ */
31
+ export declare const close: () => Promise<void>;
32
+ /**
33
+ * Change connection (close connection and open new connection from connObj)
34
+ * @param {object} [connObj = {}] - connection object
35
+ * @returns {Promise<void>}
36
+ */
37
+ export declare const changeConnection: (connObj?: any) => Promise<void>;
38
+ export declare const begin: () => Promise<void>;
39
+ export declare const commit: () => Promise<void>;
40
+ export declare const rollback: () => Promise<void>;
41
+ /**
42
+ * Execute Select statement
43
+ * @param {string} tbl - table name
44
+ * @param {object} whereObj - where object
45
+ * @param {object} [selectopts = {}] - select options
46
+ * @returns {Promise<*>} return rows
47
+ */
48
+ export declare const select: (tbl: string, whereObj: Where, selectopts?: SelectOptions & {
49
+ [key: string]: any;
50
+ }) => Promise<Row[]>;
51
+ /**
52
+ * Reset DB Schema using drop schema and recreate it
53
+ * Atterntion! You will lost data after call this function!
54
+ * @param {string} schema - db schema name
55
+ * @returns {Promise<void>} no result
56
+ */
57
+ export declare const drop_reset_schema: (schema: string) => Promise<void>;
58
+ /**
59
+ * Create the Postgres schema backing a tenant namespace.
60
+ * @param {string} name - tenant/schema name
61
+ * @param {boolean} [ifNotExists] - use IF NOT EXISTS (idempotent, used by tests)
62
+ * @returns {Promise<void>} no result
63
+ */
64
+ export declare const create_tenant_schema: (name: string, ifNotExists?: boolean) => Promise<void>;
65
+ /**
66
+ * Drop the Postgres schema backing a tenant namespace.
67
+ * @param {string} name - tenant/schema name
68
+ * @returns {Promise<void>} no result
69
+ */
70
+ export declare const drop_tenant_schema: (name: string) => Promise<void>;
71
+ /**
72
+ * Upsert a row into _sc_config.
73
+ * @param {string} key
74
+ * @param {any} value
75
+ * @returns {Promise<void>} no result
76
+ */
77
+ export declare const upsert_config: (key: string, value: any) => Promise<void>;
78
+ /**
79
+ * Build the express-session Store backed by this Postgres pool.
80
+ * @param {any} session - the express-session module instance the app uses
81
+ * @param {object} [opts]
82
+ * @returns {any} a session.Store instance
83
+ */
84
+ export declare const getExpressSessionStore: (session: any, opts?: {
85
+ pruneInterval?: number;
86
+ }) => any;
87
+ /**
88
+ * Get count of rows in table
89
+ * @param {string} - tbl - table name
90
+ * @param {object} - whereObj - where object
91
+ * @returns {Promise<number>} count of tables
92
+ */
93
+ export declare const count: (tbl: string, whereObj: Where, opts?: SelectOptions & {
94
+ [key: string]: any;
95
+ }) => Promise<number>;
96
+ /**
97
+ * Get version of PostgreSQL
98
+ * @param {boolean} short - if true return short version info else full version info
99
+ * @returns {Promise<string>} returns version
100
+ */
101
+ export declare const getVersion: (short?: boolean) => Promise<string>;
102
+ /**
103
+ * Delete rows in table
104
+ * @param {string} tbl - table name
105
+ * @param {object} whereObj - where object
106
+ * @param {object} [opts = {}]
107
+ * @returns {Promise<object[]>} result of delete execution
108
+ */
109
+ export declare const deleteWhere: (tbl: string, whereObj: Where, opts?: {
110
+ schema?: string;
111
+ client?: any;
112
+ }) => Promise<Row[]>;
113
+ export declare const truncate: (tbl: string) => Promise<Row[]>;
114
+ /**
115
+ * Insert rows into table
116
+ * @param {string} tbl - table name
117
+ * @param {object} obj - columns names and data
118
+ * @param {object} [opts = {}] - columns attributes
119
+ * @returns {Promise<string>} returns primary key column or Id column value. If primary key column is not defined then return value of Id column.
120
+ */
121
+ export declare const insert: (tbl: string, obj: Row, opts?: {
122
+ schema?: string;
123
+ onConflictDoNothing?: boolean;
124
+ noid?: boolean;
125
+ pk_name?: string;
126
+ client?: any;
127
+ }) => Promise<any>;
128
+ /**
129
+ * Update table records
130
+ * @param {string} tbl - table name
131
+ * @param {object} obj - columns names and data
132
+ * @param {number|undefined} id - id of record (primary key column value)
133
+ * @param {object} [opts = {}] - columns attributes
134
+ * @returns {Promise<void>} no result
135
+ */
136
+ export declare const update: (tbl: string, obj: Row, id: any, opts?: {
137
+ schema?: string;
138
+ pk_name?: string;
139
+ client?: any;
140
+ }) => Promise<void>;
141
+ /**
142
+ * Update table records
143
+ * @param {string} tbl - table name
144
+ * @param {object} obj - columns names and data
145
+ * @param {object} whereObj - where object
146
+ * @param {object} opts - can contain a db client for transactions
147
+ * @returns {Promise<void>} no result
148
+ */
149
+ export declare const updateWhere: (tbl: string, obj: Row, whereObj: Where, opts?: {
150
+ client?: any;
151
+ }) => Promise<void>;
152
+ /**
153
+ * Select one record
154
+ * @param {srting} tbl - table name
155
+ * @param {object} where - where object
156
+ * @param {object} [selectopts = {}] - select options
157
+ * @returns {Promise<object>} return first record from sql result
158
+ * @throws {Error}
159
+ */
160
+ export declare const selectOne: (tbl: string, where: Where, selectopts?: SelectOptions) => Promise<Row>;
161
+ /**
162
+ * Select one record or null if no records
163
+ * @param {string} tbl - table name
164
+ * @param {object} where - where object
165
+ * @param {object} [selectopts = {}] - select options
166
+ * @returns {Promise<null|object>} - null if no record or first record data
167
+ */
168
+ export declare const selectMaybeOne: (tbl: string, where: Where, selectopts?: SelectOptions) => Promise<Row | null>;
169
+ /**
170
+ * Open db connection
171
+ * Only for PG.
172
+ * @returns {Promise<*>} db connection object
173
+ */
174
+ export declare const getClient: () => Promise<PoolClient>;
175
+ /**
176
+ * Reset sequence
177
+ * Only for PG
178
+ * @param {string} tblname - table name
179
+ * @returns {Promise<void>} no result
180
+ */
181
+ export declare const reset_sequence: (tblname: string, pkname?: string) => Promise<void>;
182
+ /**
183
+ * Add unique constraint
184
+ * @param {string} table_name - table name
185
+ * @param {string[]} field_names - list of columns (members of constraint)
186
+ * @returns {Promise<void>} no result
187
+ */
188
+ export declare const add_unique_constraint: (table_name: string, field_names: string[]) => Promise<void>;
189
+ /**
190
+ * Drop unique constraint
191
+ * @param {string} table_name - table name
192
+ * @param {string[]} field_names - list of columns (members of constraint)
193
+ * @returns {Promise<void>} no results
194
+ */
195
+ export declare const drop_unique_constraint: (table_name: string, field_names: string[]) => Promise<void>;
196
+ /**
197
+ * Add index
198
+ * @param {string} table_name - table name
199
+ * @param {string} field_name - list of columns (members of constraint)
200
+ * @returns {Promise<void>} no result
201
+ */
202
+ export declare const add_index: (table_name: string, field_name: string) => Promise<void>;
203
+ /**
204
+ * Add Full-text search index
205
+ * @param {string} table_name - table name
206
+ * @param {string} field_name - list of columns (members of constraint)
207
+ * @returns {Promise<void>} no result
208
+ */
209
+ export declare const add_fts_index: (table_name: string, field_expression: string, language?: string, disable_fts?: boolean) => Promise<void>;
210
+ export declare const drop_fts_index: (table_name: string) => Promise<void>;
211
+ /**
212
+ * Add index
213
+ * @param {string} table_name - table name
214
+ * @param {string} field_name - list of columns (members of constraint)
215
+ * @returns {Promise<void>} no result
216
+ */
217
+ export declare const drop_index: (table_name: string, field_name: string) => Promise<void>;
218
+ /**
219
+ * Copy data from CSV to table?
220
+ * Only for PG
221
+ * @param {object} fileStream - file stream
222
+ * @param {string} tableName - table name
223
+ * @param {string[]} fieldNames - list of columns
224
+ * @param {object} client - db connection
225
+ * @returns {Promise<void>} no results
226
+ */
227
+ export declare const copyFrom: (fileStream: any, tableName: string, fieldNames: string[], client: any) => Promise<any>;
228
+ export declare const copyToJson: (fileStream: any, tableName: string, client?: any) => Promise<any>;
229
+ export declare const slugify: (s: string) => string;
230
+ export declare const time: () => Promise<Date>;
231
+ /**
232
+ *
233
+ * @returns
234
+ */
235
+ export declare const listTables: () => Promise<{
236
+ name: string;
237
+ }[]>;
238
+ /**
239
+ *
240
+ * @returns
241
+ */
242
+ export declare const listUserDefinedTables: () => Promise<{
243
+ name: string;
244
+ }[]>;
245
+ /**
246
+ *
247
+ * @returns
248
+ */
249
+ export declare const listScTables: () => Promise<{
250
+ name: string;
251
+ }[]>;
252
+ export declare const setRequestUserContext: (client: any, isLocal?: boolean) => Promise<void>;
253
+ export declare const withTransaction: (f: (rollback: () => Promise<void>) => Promise<any>, onError?: (e: Error) => any) => Promise<any>;
254
+ export declare const commitAndBeginNewTransaction: () => Promise<void>;
255
+ export declare const tryCatchInTransaction: (f: () => Promise<any>, onError?: (e: Error) => any) => Promise<any>;
256
+ /**
257
+ * Should be used for code that is sometimes called from within a withTransaction block
258
+ * and sometimes not.
259
+ * @param {Function} f logic to execute
260
+ * @param {Function} onError error handler
261
+ * @returns
262
+ */
263
+ export declare const openOrUseTransaction: (f: (rollback?: () => Promise<void>) => Promise<any>, onError?: (e: Error) => any) => Promise<any>;
264
+ /**
265
+ * Wait some time until current transaction COMMITs,
266
+ * then open another transaction.
267
+ * @param {Function} f logic to execute
268
+ * @param {Function} onError error handler
269
+ * @returns
270
+ */
271
+ export declare const whenTransactionisFree: (f: (rollback?: () => Promise<void>) => Promise<any>, onError?: (e: Error) => any) => Promise<any>;
272
+ export declare const query: (text: string, params?: any[]) => Promise<any>;
273
+ export { mkWhere };
274
+ export declare const driverName = "postgres";
275
+ export declare const array_agg_sql_fn = "array_agg";
276
+ export declare const serial_pk_sql_type = "serial";
277
+ export declare const json_sql_type = "jsonb";
278
+ export declare const indexable_text_sql_type = "text";
279
+ export declare const supports_search_path = true;
280
+ /**
281
+ * Initializes internals of the the postgres module.
282
+ * It must be called after importing the module.
283
+ * @param getConnectObjectPara function returning the connection object
284
+ */
285
+ export declare const init: (getConnectObjectPara: (connObj?: any) => any) => void;
286
+ //# sourceMappingURL=postgres.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../postgres.ts"],"names":[],"mappings":"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"}