adminforth 2.73.1 → 3.0.0-next.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 (50) 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 +50 -6
  5. package/dist/index.js.map +1 -1
  6. package/dist/modules/codeInjector.d.ts +0 -1
  7. package/dist/modules/codeInjector.d.ts.map +1 -1
  8. package/dist/modules/codeInjector.js +0 -17
  9. package/dist/modules/codeInjector.js.map +1 -1
  10. package/dist/modules/restApi.d.ts +1 -0
  11. package/dist/modules/restApi.d.ts.map +1 -1
  12. package/dist/modules/restApi.js +26 -1
  13. package/dist/modules/restApi.js.map +1 -1
  14. package/dist/modules/utils.d.ts +1 -0
  15. package/dist/modules/utils.d.ts.map +1 -1
  16. package/dist/modules/utils.js +13 -0
  17. package/dist/modules/utils.js.map +1 -1
  18. package/dist/spa/src/afcl/Select.vue +3 -7
  19. package/dist/spa/src/components/ListActionsThreeDots.vue +1 -1
  20. package/dist/spa/src/components/ResourceListTable.vue +10 -14
  21. package/dist/spa/src/types/Common.ts +0 -5
  22. package/dist/spa/tailwind.config.js +1 -3
  23. package/dist/types/Common.d.ts +0 -4
  24. package/dist/types/Common.d.ts.map +1 -1
  25. package/dist/types/Common.js.map +1 -1
  26. package/package.json +25 -7
  27. package/dist/dataConnectors/clickhouse.d.ts +0 -106
  28. package/dist/dataConnectors/clickhouse.d.ts.map +0 -1
  29. package/dist/dataConnectors/clickhouse.js +0 -611
  30. package/dist/dataConnectors/clickhouse.js.map +0 -1
  31. package/dist/dataConnectors/mongo.d.ts +0 -118
  32. package/dist/dataConnectors/mongo.d.ts.map +0 -1
  33. package/dist/dataConnectors/mongo.js +0 -458
  34. package/dist/dataConnectors/mongo.js.map +0 -1
  35. package/dist/dataConnectors/mysql.d.ts +0 -87
  36. package/dist/dataConnectors/mysql.d.ts.map +0 -1
  37. package/dist/dataConnectors/mysql.js +0 -569
  38. package/dist/dataConnectors/mysql.js.map +0 -1
  39. package/dist/dataConnectors/postgres.d.ts +0 -90
  40. package/dist/dataConnectors/postgres.d.ts.map +0 -1
  41. package/dist/dataConnectors/postgres.js +0 -538
  42. package/dist/dataConnectors/postgres.js.map +0 -1
  43. package/dist/dataConnectors/qdrant.d.ts +0 -57
  44. package/dist/dataConnectors/qdrant.d.ts.map +0 -1
  45. package/dist/dataConnectors/qdrant.js +0 -469
  46. package/dist/dataConnectors/qdrant.js.map +0 -1
  47. package/dist/dataConnectors/sqlite.d.ts +0 -92
  48. package/dist/dataConnectors/sqlite.d.ts.map +0 -1
  49. package/dist/dataConnectors/sqlite.js +0 -553
  50. package/dist/dataConnectors/sqlite.js.map +0 -1
@@ -1,469 +0,0 @@
1
- import { QdrantClient } from '@qdrant/js-client-rest';
2
- import dayjs from 'dayjs';
3
- import { AdminForthDataTypes, AdminForthFilterOperators, AdminForthSortDirections, } from '../types/Common.js';
4
- import AdminForthBaseConnector from './baseConnector.js';
5
- class QdrantConnector extends AdminForthBaseConnector {
6
- async setupClient(url) {
7
- const parsed = new URL(url);
8
- const apiKey = parsed.searchParams.get('apiKey');
9
- this.client = new QdrantClient(Object.assign({ url: `http://${parsed.host}` }, (apiKey ? { apiKey } : {})));
10
- }
11
- getCollectionName(resource) {
12
- return resource.table;
13
- }
14
- // Qdrant point ids can be strings or numbers
15
- normalizePointId(value) {
16
- if (typeof value === 'number') {
17
- return value;
18
- }
19
- if (typeof value === 'string') {
20
- const trimmed = value.trim();
21
- if (!trimmed) {
22
- throw new Error('Qdrant point id cannot be empty');
23
- }
24
- if (/^-?\d+$/.test(trimmed) && Number.isSafeInteger(Number(trimmed))) {
25
- return Number(trimmed);
26
- }
27
- return trimmed;
28
- }
29
- throw new Error(`Unsupported Qdrant point id type: ${typeof value}`);
30
- }
31
- // Checks if the filter is a simple equality filter on the 'id'
32
- getSingleIdFilterValue(filter) {
33
- if (filter.operator !== AdminForthFilterOperators.AND || filter.subFilters.length !== 1) {
34
- return undefined;
35
- }
36
- const single = filter.subFilters[0];
37
- if (single.field !== 'id'
38
- || single.operator !== AdminForthFilterOperators.EQ
39
- || single.rightField !== undefined
40
- || single.value === undefined) {
41
- return undefined;
42
- }
43
- return this.normalizePointId(single.value);
44
- }
45
- // check if we can use this filter in quadrant
46
- isLocalOnlyFilter(filter) {
47
- const single = filter;
48
- if (single.field || single.insecureRawNoSQL !== undefined || single.insecureRawSQL !== undefined) {
49
- return this.toQdrantFilter(filter) === undefined;
50
- }
51
- const complex = filter;
52
- return complex.subFilters.some((subFilter) => this.isLocalOnlyFilter(subFilter));
53
- }
54
- // get all collections
55
- async getAllTables() {
56
- var _a;
57
- const collections = await this.client.getCollections();
58
- return ((_a = collections.collections) !== null && _a !== void 0 ? _a : []).map((collection) => collection.name);
59
- }
60
- // discover fields
61
- async discoverFields(resource) {
62
- return resource.columns.filter((col) => !col.virtual).reduce((acc, col) => {
63
- if (!col.type) {
64
- throw new Error(`Type is not defined for column ${col.name} in resource ${resource.table}`);
65
- }
66
- acc[col.name] = {
67
- name: col.name,
68
- type: col.type,
69
- primaryKey: col.primaryKey,
70
- virtual: col.virtual,
71
- _underlineType: col._underlineType,
72
- };
73
- return acc;
74
- }, {});
75
- }
76
- // get field value
77
- getFieldValue(field, value) {
78
- if (value === undefined) {
79
- return null;
80
- }
81
- if (field.type === AdminForthDataTypes.DATETIME) {
82
- return value ? dayjs(value).toISOString() : null;
83
- }
84
- if (field.type === AdminForthDataTypes.DATE) {
85
- return value ? dayjs(value).format('YYYY-MM-DD') : null;
86
- }
87
- if (field.type === AdminForthDataTypes.BOOLEAN) {
88
- return value === null ? null : !!value;
89
- }
90
- return value;
91
- }
92
- //just passthrough
93
- setFieldValue(_field, value) {
94
- return value;
95
- }
96
- // detect column type for the discover fields
97
- detectColumnType(value) {
98
- if (value === null || value === undefined) {
99
- return AdminForthDataTypes.STRING;
100
- }
101
- if (typeof value === 'boolean') {
102
- return AdminForthDataTypes.BOOLEAN;
103
- }
104
- if (typeof value === 'number') {
105
- return Number.isInteger(value) ? AdminForthDataTypes.INTEGER : AdminForthDataTypes.FLOAT;
106
- }
107
- if (typeof value === 'string') {
108
- if (dayjs(value).isValid() && value.includes('T')) {
109
- return AdminForthDataTypes.DATETIME;
110
- }
111
- return AdminForthDataTypes.STRING;
112
- }
113
- return AdminForthDataTypes.JSON;
114
- }
115
- // get field value from point based on field name
116
- getPointFieldValue(point, fieldName) {
117
- var _a, _b, _c, _d, _e;
118
- if (fieldName === 'id') {
119
- return (_a = point.id) !== null && _a !== void 0 ? _a : null;
120
- }
121
- if (fieldName === 'payload') {
122
- return (_b = point.payload) !== null && _b !== void 0 ? _b : null;
123
- }
124
- if (fieldName === 'vector') {
125
- return (_c = point.vector) !== null && _c !== void 0 ? _c : null;
126
- }
127
- return (_e = (_d = point.payload) === null || _d === void 0 ? void 0 : _d[fieldName]) !== null && _e !== void 0 ? _e : null;
128
- }
129
- // for comparison purposes
130
- normalizeComparable(value) {
131
- if (Array.isArray(value)) {
132
- return value.map((item) => this.normalizeComparable(item));
133
- }
134
- if (value && typeof value === 'object') {
135
- return JSON.stringify(value);
136
- }
137
- return value;
138
- }
139
- // compare actual and expected values based on the operator
140
- compareValues(operator, actual, expected) {
141
- switch (operator) {
142
- case AdminForthFilterOperators.EQ:
143
- return this.normalizeComparable(actual) === this.normalizeComparable(expected);
144
- case AdminForthFilterOperators.NE:
145
- return this.normalizeComparable(actual) !== this.normalizeComparable(expected);
146
- case AdminForthFilterOperators.GT:
147
- return actual > expected;
148
- case AdminForthFilterOperators.GTE:
149
- return actual >= expected;
150
- case AdminForthFilterOperators.LT:
151
- return actual < expected;
152
- case AdminForthFilterOperators.LTE:
153
- return actual <= expected;
154
- case AdminForthFilterOperators.LIKE:
155
- return String(actual !== null && actual !== void 0 ? actual : '').includes(String(expected !== null && expected !== void 0 ? expected : ''));
156
- case AdminForthFilterOperators.ILIKE:
157
- return String(actual !== null && actual !== void 0 ? actual : '').toLowerCase().includes(String(expected !== null && expected !== void 0 ? expected : '').toLowerCase());
158
- case AdminForthFilterOperators.IN:
159
- return Array.isArray(expected) && expected.some((item) => this.normalizeComparable(item) === this.normalizeComparable(actual));
160
- case AdminForthFilterOperators.NIN:
161
- return Array.isArray(expected) && !expected.some((item) => this.normalizeComparable(item) === this.normalizeComparable(actual));
162
- case AdminForthFilterOperators.IS_EMPTY:
163
- return actual === null || actual === undefined || actual === '' || (Array.isArray(actual) && actual.length === 0);
164
- case AdminForthFilterOperators.IS_NOT_EMPTY:
165
- return !(actual === null || actual === undefined || actual === '' || (Array.isArray(actual) && actual.length === 0));
166
- default:
167
- return true;
168
- }
169
- }
170
- // check if we can use this filter in quadrant
171
- matchesFilter(point, filter) {
172
- const single = filter;
173
- if (single.field) {
174
- const actual = this.getPointFieldValue(point, single.field);
175
- const expected = single.rightField ? this.getPointFieldValue(point, single.rightField) : single.value;
176
- return this.compareValues(single.operator, actual, expected);
177
- }
178
- if (single.insecureRawNoSQL !== undefined || single.insecureRawSQL !== undefined) {
179
- return true;
180
- }
181
- const complex = filter;
182
- if (complex.operator === AdminForthFilterOperators.AND) {
183
- return complex.subFilters.every((subFilter) => this.matchesFilter(point, subFilter));
184
- }
185
- return complex.subFilters.some((subFilter) => this.matchesFilter(point, subFilter));
186
- }
187
- // transform input value to valid qdrant match value
188
- toQdrantMatchValue(value) {
189
- if (Array.isArray(value)) {
190
- const arr = value.filter((v) => ['string', 'number', 'boolean'].includes(typeof v));
191
- return arr.length ? arr : undefined;
192
- }
193
- if (['string', 'number', 'boolean'].includes(typeof value)) {
194
- return value;
195
- }
196
- return undefined;
197
- }
198
- // convert our filter format to qdrant filter format
199
- toQdrantFilter(filter) {
200
- const single = filter;
201
- if (single.insecureRawNoSQL !== undefined) {
202
- return single.insecureRawNoSQL;
203
- }
204
- if (single.insecureRawSQL !== undefined) {
205
- return undefined;
206
- }
207
- if (single.field) {
208
- if (single.rightField || single.field === 'id' || single.field === 'vector' || single.field === 'payload') {
209
- return undefined;
210
- }
211
- const matchValue = this.toQdrantMatchValue(single.value);
212
- switch (single.operator) {
213
- case AdminForthFilterOperators.EQ:
214
- if (matchValue !== undefined && !Array.isArray(matchValue)) {
215
- return { must: [{ key: single.field, match: { value: matchValue } }] };
216
- }
217
- return undefined;
218
- case AdminForthFilterOperators.NE:
219
- if (matchValue !== undefined && !Array.isArray(matchValue)) {
220
- return { must_not: [{ key: single.field, match: { value: matchValue } }] };
221
- }
222
- return undefined;
223
- case AdminForthFilterOperators.IN:
224
- if (Array.isArray(matchValue)) {
225
- return { must: [{ key: single.field, match: { any: matchValue } }] };
226
- }
227
- return undefined;
228
- case AdminForthFilterOperators.NIN:
229
- if (Array.isArray(matchValue)) {
230
- return { must_not: [{ key: single.field, match: { any: matchValue } }] };
231
- }
232
- return undefined;
233
- case AdminForthFilterOperators.GT:
234
- return { must: [{ key: single.field, range: { gt: single.value } }] };
235
- case AdminForthFilterOperators.GTE:
236
- return { must: [{ key: single.field, range: { gte: single.value } }] };
237
- case AdminForthFilterOperators.LT:
238
- return { must: [{ key: single.field, range: { lt: single.value } }] };
239
- case AdminForthFilterOperators.LTE:
240
- return { must: [{ key: single.field, range: { lte: single.value } }] };
241
- default:
242
- return undefined;
243
- }
244
- }
245
- const complex = filter;
246
- const subFilters = complex.subFilters.map((subFilter) => this.toQdrantFilter(subFilter)).filter(Boolean);
247
- if (!subFilters.length) {
248
- return undefined;
249
- }
250
- if (complex.operator === AdminForthFilterOperators.AND) {
251
- return { must: subFilters };
252
- }
253
- return { should: subFilters, min_should: 1 };
254
- }
255
- // transform qdrant point to our record format
256
- mapPointToRecord(resource, point) {
257
- const result = {};
258
- for (const column of resource.dataSourceColumns) {
259
- result[column.name] = this.getPointFieldValue(point, column.name);
260
- }
261
- return result;
262
- }
263
- // locally sort records
264
- sortRecords(records, sort) {
265
- if (!sort.length) {
266
- return records;
267
- }
268
- return [...records].sort((a, b) => {
269
- for (const sortItem of sort) {
270
- const left = a[sortItem.field];
271
- const right = b[sortItem.field];
272
- if (left === right) {
273
- continue;
274
- }
275
- if (left === null || left === undefined) {
276
- return sortItem.direction === AdminForthSortDirections.asc ? -1 : 1;
277
- }
278
- if (right === null || right === undefined) {
279
- return sortItem.direction === AdminForthSortDirections.asc ? 1 : -1;
280
- }
281
- if (left < right) {
282
- return sortItem.direction === AdminForthSortDirections.asc ? -1 : 1;
283
- }
284
- if (left > right) {
285
- return sortItem.direction === AdminForthSortDirections.asc ? 1 : -1;
286
- }
287
- }
288
- return 0;
289
- });
290
- }
291
- // check if we can sort in qdrant
292
- canUseServerSideSort(resource, sort) {
293
- if (sort.length !== 1) {
294
- return false;
295
- }
296
- const fieldName = sort[0].field;
297
- if (['id', 'payload', 'vector'].includes(fieldName)) {
298
- return false;
299
- }
300
- const column = resource.dataSourceColumns.find((item) => item.name === fieldName);
301
- if (!column) {
302
- return false;
303
- }
304
- return [
305
- AdminForthDataTypes.STRING,
306
- AdminForthDataTypes.INTEGER,
307
- AdminForthDataTypes.FLOAT,
308
- AdminForthDataTypes.BOOLEAN,
309
- AdminForthDataTypes.DATE,
310
- AdminForthDataTypes.DATETIME,
311
- ].includes(column.type);
312
- }
313
- isBadRequestError(error) {
314
- if (!(error instanceof Error)) {
315
- return false;
316
- }
317
- return /bad request/i.test(error.message);
318
- }
319
- // get scroll arguments for qdrant
320
- getScrollArgs(filters, limit, offset) {
321
- const qdrantFilter = this.toQdrantFilter(filters);
322
- return Object.assign(Object.assign(Object.assign({ limit }, (offset !== undefined ? { offset } : {})), (qdrantFilter ? { filter: qdrantFilter } : {})), { with_payload: true, with_vector: true });
323
- }
324
- // scroll request to qdrant
325
- async scrollPage(resource, filters, limit, sort, offset) {
326
- const collectionName = this.getCollectionName(resource);
327
- const canUseServerSort = this.canUseServerSideSort(resource, sort);
328
- const baseArgs = this.getScrollArgs(filters, limit, offset);
329
- if (!canUseServerSort) {
330
- return {
331
- response: await this.client.scroll(collectionName, baseArgs),
332
- usedServerSort: false,
333
- };
334
- }
335
- try {
336
- return {
337
- response: await this.client.scroll(collectionName, Object.assign(Object.assign({}, baseArgs), { order_by: {
338
- key: sort[0].field,
339
- direction: sort[0].direction === AdminForthSortDirections.asc ? 'asc' : 'desc',
340
- } })),
341
- usedServerSort: true,
342
- };
343
- }
344
- catch (error) {
345
- if (!this.isBadRequestError(error)) {
346
- throw error;
347
- }
348
- return {
349
- response: await this.client.scroll(collectionName, baseArgs),
350
- usedServerSort: false,
351
- };
352
- }
353
- }
354
- // filter points based on our filter format
355
- filterPoints(points, filters) {
356
- const qdrantFilter = this.toQdrantFilter(filters);
357
- return qdrantFilter ? points : points.filter((point) => this.matchesFilter(point, filters));
358
- }
359
- //scroll pages and filter them until we have enough matches or no more data
360
- async collectMatchingPoints(resource, filters, sort, requiredMatches) {
361
- var _a, _b, _c;
362
- let offset;
363
- let usedServerSort = false;
364
- const points = [];
365
- const pageSize = Math.max(requiredMatches, QdrantConnector.MIN_SCROLL_PAGE_SIZE);
366
- while (points.length < requiredMatches) {
367
- const page = await this.scrollPage(resource, filters, pageSize, sort, offset);
368
- usedServerSort = page.usedServerSort;
369
- const pagePoints = ((_b = (_a = page.response) === null || _a === void 0 ? void 0 : _a.points) !== null && _b !== void 0 ? _b : []);
370
- points.push(...this.filterPoints(pagePoints, filters));
371
- const nextOffset = (_c = page.response) === null || _c === void 0 ? void 0 : _c.next_page_offset;
372
- if (!nextOffset || pagePoints.length === 0) {
373
- break;
374
- }
375
- offset = nextOffset;
376
- }
377
- return { points, usedServerSort };
378
- }
379
- // get records by direct ID
380
- async getDirectIdRecords(resource, pointId, sort) {
381
- const points = await this.client.retrieve(this.getCollectionName(resource), {
382
- ids: [pointId],
383
- with_payload: true,
384
- with_vector: true,
385
- });
386
- const records = (points !== null && points !== void 0 ? points : []).map((point) => this.mapPointToRecord(resource, point));
387
- return sort.length ? this.sortRecords(records, sort) : records;
388
- }
389
- async getDataWithOriginalTypes({ resource, limit, offset, sort, filters }) {
390
- var _a, _b;
391
- const directId = this.getSingleIdFilterValue(filters);
392
- if (directId !== undefined) {
393
- const records = await this.getDirectIdRecords(resource, directId, sort);
394
- return records.slice(offset, offset + limit);
395
- }
396
- const requestedLimit = Math.max(limit + offset, 1);
397
- const localFilteringRequired = this.isLocalOnlyFilter(filters);
398
- const result = localFilteringRequired
399
- ? await this.collectMatchingPoints(resource, filters, sort, requestedLimit)
400
- : await this.scrollPage(resource, filters, requestedLimit, sort);
401
- const points = 'points' in result ? result.points : this.filterPoints(((_b = (_a = result.response) === null || _a === void 0 ? void 0 : _a.points) !== null && _b !== void 0 ? _b : []), filters);
402
- let records = points.map((point) => this.mapPointToRecord(resource, point));
403
- if (!result.usedServerSort) {
404
- records = this.sortRecords(records, sort);
405
- }
406
- return records.slice(offset, offset + limit);
407
- }
408
- async getCount({ resource, filters }) {
409
- var _a;
410
- const collectionName = this.getCollectionName(resource);
411
- const directId = this.getSingleIdFilterValue(filters);
412
- if (directId !== undefined) {
413
- const points = await this.client.retrieve(collectionName, {
414
- ids: [directId],
415
- with_payload: false,
416
- with_vector: false,
417
- });
418
- return (points !== null && points !== void 0 ? points : []).length;
419
- }
420
- const qdrantFilter = this.toQdrantFilter(filters);
421
- if (qdrantFilter || filters.subFilters.length === 0) {
422
- const result = await this.client.count(collectionName, Object.assign(Object.assign({}, (qdrantFilter ? { filter: qdrantFilter } : {})), { exact: true }));
423
- return (_a = result.count) !== null && _a !== void 0 ? _a : 0;
424
- }
425
- const allMatches = await this.collectMatchingPoints(resource, filters, [], Number.MAX_SAFE_INTEGER);
426
- return allMatches.points.length;
427
- }
428
- async getMinMaxForColumnsWithOriginalTypes({ resource, columns }) {
429
- var _a;
430
- const response = await this.client.scroll(this.getCollectionName(resource), {
431
- limit: 10000,
432
- with_payload: true,
433
- with_vector: true,
434
- });
435
- const records = ((_a = response.points) !== null && _a !== void 0 ? _a : []).map((point) => this.mapPointToRecord(resource, point));
436
- const result = {};
437
- for (const column of columns) {
438
- const values = records.map((record) => record[column.name]).filter((value) => value !== null && value !== undefined);
439
- if (!values.length) {
440
- result[column.name] = { min: null, max: null };
441
- continue;
442
- }
443
- const sorted = [...values].sort((a, b) => (a < b ? -1 : a > b ? 1 : 0));
444
- result[column.name] = {
445
- min: sorted[0],
446
- max: sorted[sorted.length - 1],
447
- };
448
- }
449
- return result;
450
- }
451
- async createRecordOriginalValues() {
452
- throw new Error('Qdrant connector is read-only for AdminForth operations');
453
- }
454
- async updateRecordOriginalValues() {
455
- throw new Error('Qdrant connector is read-only for AdminForth operations');
456
- }
457
- async deleteRecord() {
458
- throw new Error('Qdrant connector is read-only for AdminForth operations');
459
- }
460
- async deleteMany() {
461
- throw new Error('Qdrant connector is read-only for AdminForth operations');
462
- }
463
- async close() {
464
- return;
465
- }
466
- }
467
- QdrantConnector.MIN_SCROLL_PAGE_SIZE = 50;
468
- export default QdrantConnector;
469
- //# sourceMappingURL=qdrant.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"qdrant.js","sourceRoot":"","sources":["../../dataConnectors/qdrant.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
@@ -1 +0,0 @@
1
- {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../dataConnectors/sqlite.ts"],"names":[],"mappings":"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"}