adminforth 2.73.0 → 3.0.0-test.1

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 (33) hide show
  1. package/commands/createApp/templates/package.json.hbs +1 -0
  2. package/dist/index.d.ts +1 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +18 -5
  5. package/dist/index.js.map +1 -1
  6. package/dist/modules/codeInjector.d.ts.map +1 -1
  7. package/dist/modules/codeInjector.js.map +1 -1
  8. package/dist/spa/src/components/ResourceListTable.vue +3 -13
  9. package/dist/spa/src/types/Common.ts +0 -5
  10. package/dist/types/Common.d.ts +0 -4
  11. package/dist/types/Common.d.ts.map +1 -1
  12. package/dist/types/Common.js.map +1 -1
  13. package/package.json +26 -6
  14. package/dist/dataConnectors/clickhouse.d.ts +0 -106
  15. package/dist/dataConnectors/clickhouse.d.ts.map +0 -1
  16. package/dist/dataConnectors/clickhouse.js +0 -611
  17. package/dist/dataConnectors/clickhouse.js.map +0 -1
  18. package/dist/dataConnectors/mongo.d.ts +0 -118
  19. package/dist/dataConnectors/mongo.d.ts.map +0 -1
  20. package/dist/dataConnectors/mongo.js +0 -458
  21. package/dist/dataConnectors/mongo.js.map +0 -1
  22. package/dist/dataConnectors/mysql.d.ts +0 -87
  23. package/dist/dataConnectors/mysql.d.ts.map +0 -1
  24. package/dist/dataConnectors/mysql.js +0 -569
  25. package/dist/dataConnectors/mysql.js.map +0 -1
  26. package/dist/dataConnectors/postgres.d.ts +0 -90
  27. package/dist/dataConnectors/postgres.d.ts.map +0 -1
  28. package/dist/dataConnectors/postgres.js +0 -538
  29. package/dist/dataConnectors/postgres.js.map +0 -1
  30. package/dist/dataConnectors/sqlite.d.ts +0 -92
  31. package/dist/dataConnectors/sqlite.d.ts.map +0 -1
  32. package/dist/dataConnectors/sqlite.js +0 -553
  33. package/dist/dataConnectors/sqlite.js.map +0 -1
@@ -1,538 +0,0 @@
1
- import dayjs from 'dayjs';
2
- import { AdminForthDataTypes, AdminForthFilterOperators, AdminForthSortDirections, } from '../types/Common.js';
3
- import AdminForthBaseConnector from './baseConnector.js';
4
- import pkg from 'pg';
5
- import { afLogger, dbLogger } from '../modules/logger.js';
6
- const { Pool } = pkg;
7
- const { Client, types } = pkg;
8
- // postgres-date (used by pg for OID 1114/1082) parses no-TZ strings with new Date(y,m,d,...)
9
- // which treats them as LOCAL server time. Return raw strings so getFieldValue can parse as UTC.
10
- types.setTypeParser(1114, (val) => val); // TIMESTAMP WITHOUT TIME ZONE
11
- types.setTypeParser(1082, (val) => val); // DATE
12
- class PostgresConnector extends AdminForthBaseConnector {
13
- constructor() {
14
- super(...arguments);
15
- this.OperatorsMap = {
16
- [AdminForthFilterOperators.EQ]: '=',
17
- [AdminForthFilterOperators.NE]: 'IS DISTINCT FROM',
18
- [AdminForthFilterOperators.GT]: '>',
19
- [AdminForthFilterOperators.LT]: '<',
20
- [AdminForthFilterOperators.GTE]: '>=',
21
- [AdminForthFilterOperators.LTE]: '<=',
22
- [AdminForthFilterOperators.LIKE]: 'LIKE',
23
- [AdminForthFilterOperators.ILIKE]: 'ILIKE',
24
- [AdminForthFilterOperators.IN]: 'IN',
25
- [AdminForthFilterOperators.NIN]: 'NOT IN',
26
- [AdminForthFilterOperators.AND]: 'AND',
27
- [AdminForthFilterOperators.OR]: 'OR',
28
- [AdminForthFilterOperators.IS_EMPTY]: 'IS NULL',
29
- [AdminForthFilterOperators.IS_NOT_EMPTY]: 'IS NOT NULL',
30
- };
31
- this.SortDirectionsMap = {
32
- [AdminForthSortDirections.asc]: 'ASC',
33
- [AdminForthSortDirections.desc]: 'DESC',
34
- };
35
- }
36
- async setupClient(url, options) {
37
- this.client = new Pool({
38
- connectionString: url
39
- });
40
- const selfHeal = (options === null || options === void 0 ? void 0 : options.recovery) !== false;
41
- if (selfHeal) {
42
- this.client.on('error', (err) => {
43
- afLogger.error(`Postgres pool idle client error (pool self-heals on next query): ${err.message} ${err.stack}`);
44
- });
45
- try {
46
- const client = await this.client.connect();
47
- client.release();
48
- }
49
- catch (e) {
50
- afLogger.error(`Failed to connect to Postgres ${e}`);
51
- }
52
- }
53
- else {
54
- try {
55
- await this.client.connect();
56
- this.client.on('error', async (err) => {
57
- afLogger.error(`Postgres error: ${err.message} ${err.stack}`);
58
- this.client.end();
59
- await new Promise((resolve) => { setTimeout(resolve, 1000); });
60
- this.setupClient(url, options);
61
- });
62
- }
63
- catch (e) {
64
- afLogger.error(`Failed to connect to Postgres ${e}`);
65
- }
66
- }
67
- }
68
- async getAllTables() {
69
- const res = await this.client.query(`
70
- SELECT table_name
71
- FROM information_schema.tables
72
- WHERE table_schema = 'public' AND table_type = 'BASE TABLE';
73
- `);
74
- return res.rows.map(row => row.table_name);
75
- }
76
- async getAllColumnsInTable(tableName) {
77
- var _a;
78
- const res = await this.client.query(`
79
- SELECT column_name
80
- FROM information_schema.columns
81
- WHERE table_name = $1 AND table_schema = 'public';
82
- `, [tableName]);
83
- const sampleRowRes = await this.client.query(`SELECT * FROM ${tableName} ORDER BY ctid DESC LIMIT 1`);
84
- const sampleRow = (_a = sampleRowRes.rows[0]) !== null && _a !== void 0 ? _a : {};
85
- return res.rows.map(row => ({ name: row.column_name, sampleValue: sampleRow[row.column_name] }));
86
- }
87
- async checkForeignResourceCascade(resource, config, schema = 'public') {
88
- var _a;
89
- const cascadeColumn = resource.columns.find(c => { var _a; return ((_a = c.foreignResource) === null || _a === void 0 ? void 0 : _a.onDelete) === 'cascade'; });
90
- if (!cascadeColumn)
91
- return;
92
- const parentResource = config.resources.find(r => r.resourceId === cascadeColumn.foreignResource.resourceId);
93
- if (!parentResource)
94
- return;
95
- const res = await this.client.query(`
96
- SELECT 1
97
- FROM pg_constraint
98
- WHERE contype = 'f'
99
- AND confrelid = ($2 || '.' || $1)::regclass
100
- AND conrelid = ($2 || '.' || $3)::regclass
101
- AND confdeltype = 'c'
102
- LIMIT 1
103
- `, [parentResource.table, schema, resource.table]);
104
- const hasCascadeOnTable = res.rowCount > 0;
105
- const isUploadPluginInstalled = (_a = resource.plugins) === null || _a === void 0 ? void 0 : _a.some(p => p.className === "UploadPlugin");
106
- if (hasCascadeOnTable && isUploadPluginInstalled) {
107
- afLogger.warn(`Table "${resource.table}" has ON DELETE CASCADE and installed upload plugin, which may conflict with adminForth cascade deletion`);
108
- }
109
- }
110
- async discoverFields(resource, config) {
111
- await this.checkForeignResourceCascade(resource, config);
112
- const tableName = resource.table;
113
- const stmt = await this.client.query(`
114
- SELECT
115
- a.attname AS name,
116
- pg_catalog.format_type(a.atttypid, a.atttypmod) AS type,
117
- a.attnotnull AS notnull,
118
- COALESCE(pg_get_expr(d.adbin, d.adrelid), '') AS dflt_value,
119
- CASE
120
- WHEN ct.contype = 'p' THEN 1
121
- ELSE 0
122
- END AS pk
123
- FROM
124
- pg_catalog.pg_attribute a
125
- LEFT JOIN pg_catalog.pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
126
- LEFT JOIN pg_catalog.pg_constraint ct ON a.attnum = ANY (ct.conkey) AND a.attrelid = ct.conrelid
127
- LEFT JOIN pg_catalog.pg_class c ON a.attrelid = c.oid
128
- LEFT JOIN pg_catalog.pg_namespace n ON c.relnamespace = n.oid
129
- WHERE
130
- c.relname = $1
131
- AND a.attnum > 0
132
- AND NOT a.attisdropped
133
- ORDER BY
134
- a.attnum;
135
- `, [tableName]);
136
- const rows = stmt.rows;
137
- const fieldTypes = {};
138
- rows.forEach((row) => {
139
- const field = {};
140
- const baseType = row.type.toLowerCase();
141
- const isPgArray = baseType.endsWith('[]');
142
- const normalizedBaseType = isPgArray ? baseType.slice(0, -2) : baseType;
143
- if (normalizedBaseType == 'int') {
144
- field.type = AdminForthDataTypes.INTEGER;
145
- field._underlineType = 'int';
146
- }
147
- else if (normalizedBaseType.includes('float') || normalizedBaseType.includes('double')) {
148
- field.type = AdminForthDataTypes.FLOAT;
149
- field._underlineType = 'float';
150
- }
151
- else if (normalizedBaseType.includes('bool')) {
152
- field.type = AdminForthDataTypes.BOOLEAN;
153
- field._underlineType = 'bool';
154
- }
155
- else if (normalizedBaseType == 'uuid') {
156
- field.type = AdminForthDataTypes.STRING;
157
- field._underlineType = 'uuid';
158
- }
159
- else if (normalizedBaseType.includes('character varying')) {
160
- field.type = AdminForthDataTypes.STRING;
161
- field._underlineType = 'varchar';
162
- const length = normalizedBaseType.match(/\d+/);
163
- field.maxLength = length ? parseInt(length[0]) : null;
164
- }
165
- else if (normalizedBaseType == 'text') {
166
- field.type = AdminForthDataTypes.TEXT;
167
- field._underlineType = 'text';
168
- }
169
- else if (normalizedBaseType.includes('decimal(') || normalizedBaseType.includes('numeric(')) {
170
- field.type = AdminForthDataTypes.DECIMAL;
171
- field._underlineType = 'decimal';
172
- const [precision, scale] = normalizedBaseType.match(/\d+/g);
173
- field.precision = parseInt(precision);
174
- field.scale = parseInt(scale);
175
- }
176
- else if (normalizedBaseType == 'real') {
177
- field.type = AdminForthDataTypes.FLOAT;
178
- field._underlineType = 'real';
179
- }
180
- else if (normalizedBaseType == 'date') {
181
- field.type = AdminForthDataTypes.DATE;
182
- field._underlineType = 'timestamp';
183
- }
184
- else if (normalizedBaseType.includes('date') || normalizedBaseType.includes('time')) {
185
- field.type = AdminForthDataTypes.DATETIME;
186
- field._underlineType = 'timestamp';
187
- }
188
- else if (normalizedBaseType == 'json' || normalizedBaseType == 'jsonb') {
189
- field.type = AdminForthDataTypes.JSON;
190
- field._underlineType = 'json';
191
- }
192
- else {
193
- field.type = 'unknown';
194
- }
195
- field._baseTypeDebug = baseType;
196
- if (isPgArray) {
197
- field._isPgArray = true;
198
- }
199
- field.primaryKey = row.pk == 1;
200
- field.default = row.dflt_value;
201
- field.required = row.notnull && !row.dflt_value;
202
- fieldTypes[row.name] = field;
203
- });
204
- return fieldTypes;
205
- }
206
- getFieldValue(field, value) {
207
- if (field.type == AdminForthDataTypes.DATETIME) {
208
- if (!value) {
209
- return null;
210
- }
211
- if (field._underlineType == 'timestamp') {
212
- if (typeof value == 'string') {
213
- const normalizedValue = value.includes(' ') ? `${value.replace(' ', 'T')}Z` : value;
214
- return dayjs(normalizedValue).toISOString();
215
- }
216
- return dayjs(value).toISOString();
217
- }
218
- else if (field._underlineType == 'int') {
219
- return dayjs.unix(+value).toISOString();
220
- }
221
- else if (field._underlineType == 'varchar') {
222
- return dayjs(value).toISOString();
223
- }
224
- else {
225
- throw new Error(`AdminForth does not support row type: ${field._underlineType} for timestamps, use VARCHAR (with iso strings) or TIMESTAMP/INT (with unix timestamps). Issue in field: ${field.name} in table: ${field.table}`);
226
- }
227
- }
228
- if (field.type == AdminForthDataTypes.DATE) {
229
- if (!value) {
230
- return null;
231
- }
232
- return value;
233
- }
234
- if (field.type == AdminForthDataTypes.BOOLEAN) {
235
- return value === null ? null : !!value;
236
- }
237
- if (field.type == AdminForthDataTypes.JSON) {
238
- if (typeof value == 'string') {
239
- try {
240
- return JSON.parse(value);
241
- }
242
- catch (e) {
243
- return { 'error': `Failed to parse JSON: ${e.message}` };
244
- }
245
- }
246
- else if (typeof value == 'object') {
247
- return value;
248
- }
249
- else {
250
- afLogger.error(`JSON field value is not string or object, but has type: ${typeof value}`);
251
- afLogger.error(`Field:, ${field}`);
252
- return {};
253
- }
254
- }
255
- return value;
256
- }
257
- setFieldValue(field, value) {
258
- var _a;
259
- if (field.type == AdminForthDataTypes.DATETIME) {
260
- if (!value) {
261
- return null;
262
- }
263
- if (field._underlineType == 'timestamp' || field._underlineType == 'int') {
264
- return dayjs(value);
265
- }
266
- else if (field._underlineType == 'varchar') {
267
- return dayjs(value).toISOString();
268
- }
269
- }
270
- else if ((_a = field.isArray) === null || _a === void 0 ? void 0 : _a.enabled) {
271
- if (value === null || value === undefined) {
272
- return null;
273
- }
274
- if (field._isPgArray) {
275
- return value;
276
- }
277
- if (field._underlineType == 'json') {
278
- return JSON.stringify(value);
279
- }
280
- return JSON.stringify(value);
281
- }
282
- else if (field.type == AdminForthDataTypes.BOOLEAN) {
283
- return value === null ? null : (value ? true : false);
284
- }
285
- else if (field.type == AdminForthDataTypes.JSON) {
286
- if (field._underlineType == 'json') {
287
- return typeof value === 'string' || value === null ? value : JSON.stringify(value);
288
- }
289
- else {
290
- return JSON.stringify(value);
291
- }
292
- }
293
- return value;
294
- }
295
- getFilterString(resource, filter) {
296
- if (filter.field) {
297
- // Field-to-field comparison support
298
- if (filter.rightField) {
299
- const left = `"${filter.field}"`;
300
- const right = `"${filter.rightField}"`;
301
- const operator = this.OperatorsMap[filter.operator];
302
- return `${left} ${operator} ${right}`;
303
- }
304
- let placeholder = '$?';
305
- let field = filter.field;
306
- const fieldData = resource.dataSourceColumns.find((col) => col.name == field);
307
- let operator = this.OperatorsMap[filter.operator];
308
- // Handle IS_EMPTY and IS_NOT_EMPTY operators
309
- if (filter.operator == AdminForthFilterOperators.IS_EMPTY || filter.operator == AdminForthFilterOperators.IS_NOT_EMPTY) {
310
- return `"${field}" ${operator}`;
311
- }
312
- else if (filter.operator == AdminForthFilterOperators.IN || filter.operator == AdminForthFilterOperators.NIN) {
313
- placeholder = `(${filter.value.map(() => placeholder).join(', ')})`;
314
- }
315
- if (fieldData._underlineType == 'uuid' &&
316
- (filter.operator == AdminForthFilterOperators.ILIKE || filter.operator == AdminForthFilterOperators.LIKE)) {
317
- field = `cast("${field}" as text)`;
318
- }
319
- else if (filter.operator == AdminForthFilterOperators.EQ && filter.value === null) {
320
- operator = 'IS';
321
- placeholder = 'NULL';
322
- }
323
- else {
324
- field = `"${field}"`;
325
- }
326
- return `${field} ${operator} ${placeholder}`;
327
- }
328
- // filter is a single insecure raw sql
329
- if (filter.insecureRawSQL) {
330
- return filter.insecureRawSQL;
331
- }
332
- // filter is a AndOr filter
333
- return filter.subFilters.map((f) => {
334
- if (f.field || f.insecureRawSQL) {
335
- // subFilter is a Single filter
336
- return this.getFilterString(resource, f);
337
- }
338
- // subFilter is a AndOr filter - add parentheses
339
- return `(${this.getFilterString(resource, f)})`;
340
- }).join(` ${this.OperatorsMap[filter.operator]} `);
341
- }
342
- getFilterParams(filter) {
343
- if (filter.field) {
344
- if (filter.rightField) {
345
- // No params for field-to-field comparisons
346
- return [];
347
- }
348
- // filter is a Single filter
349
- // Handle IS_EMPTY and IS_NOT_EMPTY operators - no params needed
350
- if (filter.operator == AdminForthFilterOperators.IS_EMPTY || filter.operator == AdminForthFilterOperators.IS_NOT_EMPTY) {
351
- return [];
352
- }
353
- else if (filter.operator == AdminForthFilterOperators.LIKE || filter.operator == AdminForthFilterOperators.ILIKE) {
354
- return [`%${filter.value}%`];
355
- }
356
- else if (filter.operator == AdminForthFilterOperators.IN || filter.operator == AdminForthFilterOperators.NIN) {
357
- return filter.value;
358
- }
359
- else if (filter.operator == AdminForthFilterOperators.EQ && filter.value === null) {
360
- return [];
361
- }
362
- else {
363
- return [filter.value];
364
- }
365
- }
366
- // filter is a single insecure raw sql
367
- if (filter.insecureRawSQL) {
368
- return [];
369
- }
370
- // filter is a AndOrFilter
371
- return filter.subFilters.reduce((params, f) => {
372
- return params.concat(this.getFilterParams(f));
373
- }, []);
374
- }
375
- whereClauseAndValues(resource, filters) {
376
- let where = filters.subFilters.length ? `WHERE ${this.getFilterString(resource, filters)}` : '';
377
- const filterValues = filters.subFilters.length ? this.getFilterParams(filters) : [];
378
- filterValues.forEach((_, i) => where = where.replace('$?', `$${i + 1}`));
379
- return {
380
- sql: where,
381
- paramsCount: filterValues.length + 1,
382
- values: filterValues,
383
- };
384
- }
385
- async getAggregateWithOriginalTypes({ resource, filters, aggregations, groupBy }) {
386
- var _a, _b;
387
- const tableName = resource.table;
388
- const selectParts = [];
389
- const groupExprs = [];
390
- const groupByRules = this.normalizeGroupByRules(groupBy);
391
- for (const [index, groupByRule] of groupByRules.entries()) {
392
- let groupExpr;
393
- if (groupByRule.type === 'date_trunc') {
394
- const g = groupByRule;
395
- const tz = (_a = g.timezone) !== null && _a !== void 0 ? _a : 'UTC';
396
- const col = resource.dataSourceColumns.find(c => c.name === g.field);
397
- const hasTZ = (_b = col === null || col === void 0 ? void 0 : col._baseTypeDebug) === null || _b === void 0 ? void 0 : _b.includes('with time zone');
398
- const innerExpr = hasTZ
399
- ? `"${g.field}" AT TIME ZONE '${tz}'`
400
- : `"${g.field}" AT TIME ZONE 'UTC' AT TIME ZONE '${tz}'`;
401
- const fieldExpr = `DATE_TRUNC('${g.truncation}', ${innerExpr})`;
402
- groupExpr = `TO_CHAR(${fieldExpr}, 'YYYY-MM-DD')`;
403
- }
404
- else {
405
- const g = groupByRule;
406
- groupExpr = `"${g.field}"`;
407
- }
408
- groupExprs.push(groupExpr);
409
- selectParts.push(`${groupExpr} AS "${this.getGroupByResultAlias(groupByRule, index, groupByRules.length)}"`);
410
- }
411
- for (const [alias, rule] of Object.entries(aggregations)) {
412
- switch (rule.operation) {
413
- case 'sum':
414
- selectParts.push(`SUM("${rule.field}") AS "${alias}"`);
415
- break;
416
- case 'count':
417
- selectParts.push(`COUNT(*) AS "${alias}"`);
418
- break;
419
- case 'count_distinct':
420
- selectParts.push(`COUNT(DISTINCT "${rule.field}") AS "${alias}"`);
421
- break;
422
- case 'avg':
423
- selectParts.push(`AVG("${rule.field}") AS "${alias}"`);
424
- break;
425
- case 'min':
426
- selectParts.push(`MIN("${rule.field}") AS "${alias}"`);
427
- break;
428
- case 'max':
429
- selectParts.push(`MAX("${rule.field}") AS "${alias}"`);
430
- break;
431
- case 'median':
432
- selectParts.push(`PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY "${rule.field}") AS "${alias}"`);
433
- break;
434
- }
435
- }
436
- const { sql: where, values: filterValues } = this.whereClauseAndValues(resource, filters);
437
- let query = `SELECT ${selectParts.join(', ')} FROM "${tableName}" ${where}`;
438
- if (groupExprs.length) {
439
- query += ` GROUP BY ${groupExprs.join(', ')} ORDER BY ${groupExprs.join(', ')} ASC`;
440
- }
441
- dbLogger.trace(`🪲📜 PG AGG Q: ${query}, params: ${JSON.stringify(filterValues)}`);
442
- const stmt = await this.client.query(query, filterValues);
443
- return stmt.rows;
444
- }
445
- async getDataWithOriginalTypes({ resource, limit, offset, sort, filters, columns }) {
446
- const selectedColumns = (columns !== null && columns !== void 0 ? columns : resource.dataSourceColumns).map((col) => `"${col.name}"`).join(', ');
447
- const tableName = resource.table;
448
- const { sql: where, paramsCount, values: filterValues } = this.whereClauseAndValues(resource, filters);
449
- const limitOffset = `LIMIT $${paramsCount} OFFSET $${paramsCount + 1}`;
450
- const d = [...filterValues, limit, offset];
451
- const orderBy = sort.length ? `ORDER BY ${sort.map((s) => `"${s.field}" ${this.SortDirectionsMap[s.direction]}`).join(', ')}` : '';
452
- const selectQuery = `SELECT ${selectedColumns} FROM "${tableName}" ${where} ${orderBy} ${limitOffset}`;
453
- dbLogger.trace(`🪲📜 PG Q: ${selectQuery}, params: ${JSON.stringify(d)}`);
454
- const stmt = await this.client.query(selectQuery, d);
455
- const rows = stmt.rows;
456
- return rows.map((row) => {
457
- const newRow = {};
458
- for (const [key, value] of Object.entries(row)) {
459
- newRow[key] = value;
460
- }
461
- return newRow;
462
- });
463
- }
464
- async getCount({ resource, filters }) {
465
- const tableName = resource.table;
466
- let normalizedFilters = filters;
467
- // validate and normalize in case this method is called from dataAPI
468
- if (filters) {
469
- const filterValidation = this.validateAndNormalizeFilters(filters, resource);
470
- if (!filterValidation.ok) {
471
- throw new Error(filterValidation.error);
472
- }
473
- normalizedFilters = filterValidation.normalizedFilters;
474
- }
475
- const { sql: where, values: filterValues } = this.whereClauseAndValues(resource, normalizedFilters);
476
- const q = `SELECT COUNT(*) FROM "${tableName}" ${where}`;
477
- dbLogger.trace(`🪲📜 PG Q: ${q}, values: ${JSON.stringify(filterValues)}`);
478
- const stmt = await this.client.query(q, filterValues);
479
- return +stmt.rows[0].count;
480
- }
481
- async getMinMaxForColumnsWithOriginalTypes({ resource, columns }) {
482
- const tableName = resource.table;
483
- const result = {};
484
- await Promise.all(columns.map(async (col) => {
485
- const q = `SELECT MIN("${col.name}") as min, MAX("${col.name}") as max FROM "${tableName}"`;
486
- dbLogger.trace(`🪲📜 PG Q: ${q}`);
487
- const stmt = await this.client.query(q);
488
- const { min, max } = stmt.rows[0];
489
- result[col.name] = {
490
- min, max,
491
- };
492
- }));
493
- return result;
494
- }
495
- async createRecordOriginalValues({ resource, record }) {
496
- const tableName = resource.table;
497
- const columns = Object.keys(record);
498
- const placeholders = columns.map((_, i) => `$${i + 1}`).join(', ');
499
- const values = columns.map((colName) => record[colName]);
500
- for (let i = 0; i < columns.length; i++) {
501
- columns[i] = `"${columns[i]}"`;
502
- }
503
- const primaryKey = this.getPrimaryKey(resource);
504
- const q = `INSERT INTO "${tableName}" (${columns.join(', ')}) VALUES (${placeholders}) RETURNING "${primaryKey}"`;
505
- dbLogger.trace(`🪲📜 PG Q: ${q}, values: ${JSON.stringify(values)}`);
506
- const ret = await this.client.query(q, values);
507
- return ret.rows[0][primaryKey];
508
- }
509
- async updateRecordOriginalValues({ resource, recordId, newValues }) {
510
- const values = [...Object.values(newValues), recordId];
511
- const columnsWithPlaceholders = Object.keys(newValues).map((col, i) => `"${col}" = $${i + 1}`).join(', ');
512
- const q = `UPDATE "${resource.table}" SET ${columnsWithPlaceholders} WHERE "${this.getPrimaryKey(resource)}" = $${values.length}`;
513
- dbLogger.trace(`🪲📜 PG Q: ${q}, values: ${JSON.stringify(values)}`);
514
- await this.client.query(q, values);
515
- }
516
- async deleteRecord({ resource, recordId }) {
517
- const q = `DELETE FROM "${resource.table}" WHERE "${this.getPrimaryKey(resource)}" = $1`;
518
- dbLogger.trace(`🪲📜 PG Q: ${q}, values: ${JSON.stringify([recordId])}`);
519
- const res = await this.client.query(q, [recordId]);
520
- return res.rowCount > 0;
521
- }
522
- async deleteMany({ resource, recordIds }) {
523
- var _a;
524
- if (!recordIds || recordIds.length === 0) {
525
- return 0;
526
- }
527
- const placeholders = recordIds.map((_, idx) => `$${idx + 1}`).join(', ');
528
- const query = `DELETE FROM "${resource.table}" WHERE "${this.getPrimaryKey(resource)}" IN (${placeholders})`;
529
- dbLogger.trace(`🪲📜 PG Q: ${query}, values: ${JSON.stringify([recordIds])}`);
530
- const res = await this.client.query(query, recordIds);
531
- return (_a = res.rowCount) !== null && _a !== void 0 ? _a : 0;
532
- }
533
- async close() {
534
- await this.client.end();
535
- }
536
- }
537
- export default PostgresConnector;
538
- //# sourceMappingURL=postgres.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../dataConnectors/postgres.ts"],"names":[],"mappings":"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"}
@@ -1,92 +0,0 @@
1
- import { IAdminForthDataSourceConnector, IAdminForthSingleFilter, IAdminForthAndOrFilter, AdminForthResource, AdminForthResourceColumn, AdminForthConfig, IAggregationRule, IGroupByRule } from '../types/Back.js';
2
- import AdminForthBaseConnector from './baseConnector.js';
3
- declare class SQLiteConnector extends AdminForthBaseConnector implements IAdminForthDataSourceConnector {
4
- setupClient(url: string): Promise<void>;
5
- getAllTables(): Promise<Array<string>>;
6
- getAllColumnsInTable(tableName: string): Promise<Array<{
7
- name: string;
8
- sampleValue?: any;
9
- }>>;
10
- hasSQLiteCascadeFk(resource: AdminForthResource, config: AdminForthConfig): Promise<boolean>;
11
- discoverFields(resource: AdminForthResource, config: AdminForthConfig): Promise<{
12
- [key: string]: AdminForthResourceColumn;
13
- }>;
14
- getFieldValue(field: AdminForthResourceColumn, value: any): any;
15
- setFieldValue(field: AdminForthResourceColumn, value: any): any;
16
- OperatorsMap: {
17
- eq: string;
18
- ne: string;
19
- gt: string;
20
- lt: string;
21
- gte: string;
22
- lte: string;
23
- like: string;
24
- ilike: string;
25
- in: string;
26
- nin: string;
27
- and: string;
28
- or: string;
29
- isEmpty: string;
30
- isNotEmpty: string;
31
- };
32
- SortDirectionsMap: {
33
- asc: string;
34
- desc: string;
35
- };
36
- getFilterString(filter: IAdminForthSingleFilter | IAdminForthAndOrFilter): string;
37
- getFilterParams(filter: IAdminForthSingleFilter | IAdminForthAndOrFilter): any[];
38
- whereClause(filter: IAdminForthAndOrFilter): string;
39
- private _dateGroupKey;
40
- getAggregateWithOriginalTypes({ resource, filters, aggregations, groupBy }: {
41
- resource: AdminForthResource;
42
- filters: IAdminForthAndOrFilter;
43
- aggregations: {
44
- [alias: string]: IAggregationRule;
45
- };
46
- groupBy?: IGroupByRule | IGroupByRule[];
47
- }): Promise<Array<{
48
- group?: string;
49
- [key: string]: any;
50
- }>>;
51
- getDataWithOriginalTypes({ resource, limit, offset, sort, filters, columns }: {
52
- resource: any;
53
- limit: any;
54
- offset: any;
55
- sort: any;
56
- filters: any;
57
- columns: any;
58
- }): Promise<any[]>;
59
- getCount({ resource, filters }: {
60
- resource: any;
61
- filters: any;
62
- }): Promise<number>;
63
- getMinMaxForColumnsWithOriginalTypes({ resource, columns }: {
64
- resource: AdminForthResource;
65
- columns: AdminForthResourceColumn[];
66
- }): Promise<{
67
- [key: string]: {
68
- min: any;
69
- max: any;
70
- };
71
- }>;
72
- createRecordOriginalValues({ resource, record }: {
73
- resource: AdminForthResource;
74
- record: any;
75
- }): Promise<string>;
76
- updateRecordOriginalValues({ resource, recordId, newValues }: {
77
- resource: AdminForthResource;
78
- recordId: any;
79
- newValues: any;
80
- }): Promise<void>;
81
- deleteRecord({ resource, recordId }: {
82
- resource: AdminForthResource;
83
- recordId: any;
84
- }): Promise<boolean>;
85
- deleteMany({ resource, recordIds }: {
86
- resource: AdminForthResource;
87
- recordIds: string[];
88
- }): Promise<number>;
89
- close(): void;
90
- }
91
- export default SQLiteConnector;
92
- //# sourceMappingURL=sqlite.d.ts.map