adminforth 1.3.54-next.8 → 1.3.55-next.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.
Files changed (250) hide show
  1. package/dist/auth.d.ts +31 -0
  2. package/dist/auth.d.ts.map +1 -0
  3. package/dist/auth.js +42 -56
  4. package/dist/auth.js.map +1 -0
  5. package/dist/basePlugin.d.ts +18 -0
  6. package/dist/basePlugin.d.ts.map +1 -0
  7. package/dist/basePlugin.js +1 -0
  8. package/dist/basePlugin.js.map +1 -0
  9. package/dist/dataConnectors/baseConnector.d.ts +94 -0
  10. package/dist/dataConnectors/baseConnector.d.ts.map +1 -0
  11. package/dist/dataConnectors/baseConnector.js +108 -122
  12. package/dist/dataConnectors/baseConnector.js.map +1 -0
  13. package/dist/dataConnectors/clickhouse.d.ts +92 -0
  14. package/dist/dataConnectors/clickhouse.d.ts.map +1 -0
  15. package/dist/dataConnectors/clickhouse.js +132 -149
  16. package/dist/dataConnectors/clickhouse.js.map +1 -0
  17. package/dist/dataConnectors/mongo.d.ts +93 -0
  18. package/dist/dataConnectors/mongo.d.ts.map +1 -0
  19. package/dist/dataConnectors/mongo.js +75 -101
  20. package/dist/dataConnectors/mongo.js.map +1 -0
  21. package/dist/dataConnectors/postgres.d.ts +71 -0
  22. package/dist/dataConnectors/postgres.d.ts.map +1 -0
  23. package/dist/dataConnectors/postgres.js +124 -143
  24. package/dist/dataConnectors/postgres.js.map +1 -0
  25. package/dist/dataConnectors/sqlite.d.ts +67 -0
  26. package/dist/dataConnectors/sqlite.d.ts.map +1 -0
  27. package/dist/dataConnectors/sqlite.js +113 -130
  28. package/dist/dataConnectors/sqlite.js.map +1 -0
  29. package/dist/index.d.ts +92 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +197 -217
  32. package/dist/index.js.map +1 -0
  33. package/dist/modules/codeInjector.d.ts +35 -0
  34. package/dist/modules/codeInjector.d.ts.map +1 -0
  35. package/dist/modules/codeInjector.js +480 -486
  36. package/dist/modules/codeInjector.js.map +1 -0
  37. package/dist/modules/configValidator.d.ts +12 -0
  38. package/dist/modules/configValidator.d.ts.map +1 -0
  39. package/dist/modules/configValidator.js +31 -22
  40. package/dist/modules/configValidator.js.map +1 -0
  41. package/dist/modules/operationalResource.d.ts +17 -0
  42. package/dist/modules/operationalResource.d.ts.map +1 -0
  43. package/dist/modules/operationalResource.js +50 -70
  44. package/dist/modules/operationalResource.js.map +1 -0
  45. package/dist/modules/restApi.d.ts +10 -0
  46. package/dist/modules/restApi.d.ts.map +1 -0
  47. package/dist/modules/restApi.js +104 -116
  48. package/dist/modules/restApi.js.map +1 -0
  49. package/dist/modules/styleGenerator.d.ts +9 -0
  50. package/dist/modules/styleGenerator.d.ts.map +1 -0
  51. package/dist/modules/styleGenerator.js +1 -0
  52. package/dist/modules/styleGenerator.js.map +1 -0
  53. package/dist/modules/styles.d.ts +96 -0
  54. package/dist/modules/styles.d.ts.map +1 -0
  55. package/dist/modules/styles.js +1 -0
  56. package/dist/modules/styles.js.map +1 -0
  57. package/dist/modules/utils.d.ts +39 -0
  58. package/dist/modules/utils.d.ts.map +1 -0
  59. package/dist/modules/utils.js +1 -0
  60. package/dist/modules/utils.js.map +1 -0
  61. package/dist/plugins/audit-log/types.d.ts +35 -0
  62. package/dist/plugins/audit-log/types.d.ts.map +1 -0
  63. package/dist/plugins/audit-log/types.js +2 -0
  64. package/dist/plugins/audit-log/types.js.map +1 -0
  65. package/dist/plugins/chat-gpt/types.d.ts +82 -0
  66. package/dist/plugins/chat-gpt/types.d.ts.map +1 -0
  67. package/dist/plugins/chat-gpt/types.js +2 -0
  68. package/dist/plugins/chat-gpt/types.js.map +1 -0
  69. package/dist/plugins/email-password-reset/types.d.ts +28 -0
  70. package/dist/plugins/email-password-reset/types.d.ts.map +1 -0
  71. package/dist/plugins/email-password-reset/types.js +2 -0
  72. package/dist/plugins/email-password-reset/types.js.map +1 -0
  73. package/dist/plugins/foreign-inline-list/types.d.ts +19 -0
  74. package/dist/plugins/foreign-inline-list/types.d.ts.map +1 -0
  75. package/dist/plugins/foreign-inline-list/types.js +2 -0
  76. package/dist/plugins/foreign-inline-list/types.js.map +1 -0
  77. package/dist/plugins/import-export/types.d.ts +3 -0
  78. package/dist/plugins/import-export/types.d.ts.map +1 -0
  79. package/dist/plugins/import-export/types.js +2 -0
  80. package/dist/plugins/import-export/types.js.map +1 -0
  81. package/dist/plugins/rich-editor/custom/async-queue.d.ts +8 -0
  82. package/dist/plugins/rich-editor/custom/async-queue.d.ts.map +1 -0
  83. package/dist/plugins/rich-editor/custom/async-queue.js +29 -0
  84. package/dist/plugins/rich-editor/custom/async-queue.js.map +1 -0
  85. package/dist/plugins/rich-editor/dist/custom/async-queue.d.ts +8 -0
  86. package/dist/plugins/rich-editor/dist/custom/async-queue.d.ts.map +1 -0
  87. package/dist/plugins/rich-editor/dist/custom/async-queue.js +29 -0
  88. package/dist/plugins/rich-editor/dist/custom/async-queue.js.map +1 -0
  89. package/dist/plugins/rich-editor/types.d.ts +153 -0
  90. package/dist/plugins/rich-editor/types.d.ts.map +1 -0
  91. package/dist/plugins/rich-editor/types.js +16 -0
  92. package/dist/plugins/rich-editor/types.js.map +1 -0
  93. package/dist/plugins/two-factors-auth/types.d.ts +18 -0
  94. package/dist/plugins/two-factors-auth/types.d.ts.map +1 -0
  95. package/dist/plugins/two-factors-auth/types.js +2 -0
  96. package/dist/plugins/two-factors-auth/types.js.map +1 -0
  97. package/dist/plugins/upload/types.d.ts +132 -0
  98. package/dist/plugins/upload/types.d.ts.map +1 -0
  99. package/dist/plugins/upload/types.js +2 -0
  100. package/dist/plugins/upload/types.js.map +1 -0
  101. package/dist/servers/express.d.ts +18 -0
  102. package/dist/servers/express.d.ts.map +1 -0
  103. package/dist/servers/express.js +30 -42
  104. package/dist/servers/express.js.map +1 -0
  105. package/dist/types/AdminForthConfig.d.ts +1619 -0
  106. package/dist/types/AdminForthConfig.d.ts.map +1 -0
  107. package/dist/types/AdminForthConfig.js +1 -0
  108. package/dist/types/AdminForthConfig.js.map +1 -0
  109. package/{types/FrontendAPI.ts → dist/types/FrontendAPI.d.ts} +27 -52
  110. package/dist/types/FrontendAPI.d.ts.map +1 -0
  111. package/dist/types/FrontendAPI.js +1 -0
  112. package/dist/types/FrontendAPI.js.map +1 -0
  113. package/package.json +15 -5
  114. package/auth.ts +0 -140
  115. package/basePlugin.ts +0 -70
  116. package/dataConnectors/baseConnector.ts +0 -216
  117. package/dataConnectors/clickhouse.ts +0 -338
  118. package/dataConnectors/mongo.ts +0 -202
  119. package/dataConnectors/postgres.ts +0 -306
  120. package/dataConnectors/sqlite.ts +0 -254
  121. package/dist/spa/.eslintrc.cjs +0 -14
  122. package/dist/spa/README.md +0 -39
  123. package/dist/spa/env.d.ts +0 -1
  124. package/dist/spa/index.html +0 -23
  125. package/dist/spa/package-lock.json +0 -4573
  126. package/dist/spa/package.json +0 -49
  127. package/dist/spa/postcss.config.js +0 -6
  128. package/dist/spa/public/assets/favicon.png +0 -0
  129. package/dist/spa/src/App.vue +0 -314
  130. package/dist/spa/src/assets/base.css +0 -2
  131. package/dist/spa/src/assets/logo.svg +0 -19
  132. package/dist/spa/src/components/AcceptModal.vue +0 -45
  133. package/dist/spa/src/components/Breadcrumbs.vue +0 -41
  134. package/dist/spa/src/components/BreadcrumbsWithButtons.vue +0 -26
  135. package/dist/spa/src/components/CustomDatePicker.vue +0 -176
  136. package/dist/spa/src/components/CustomDateRangePicker.vue +0 -218
  137. package/dist/spa/src/components/CustomRangePicker.vue +0 -152
  138. package/dist/spa/src/components/Dropdown.vue +0 -168
  139. package/dist/spa/src/components/Filters.vue +0 -222
  140. package/dist/spa/src/components/HelloWorld.vue +0 -17
  141. package/dist/spa/src/components/MenuLink.vue +0 -24
  142. package/dist/spa/src/components/ResourceForm.vue +0 -294
  143. package/dist/spa/src/components/ResourceListTable.vue +0 -394
  144. package/dist/spa/src/components/SingleSkeletLoader.vue +0 -13
  145. package/dist/spa/src/components/SkeleteLoader.vue +0 -23
  146. package/dist/spa/src/components/Toast.vue +0 -77
  147. package/dist/spa/src/components/ValueRenderer.vue +0 -66
  148. package/dist/spa/src/components/icons/IconCalendar.vue +0 -5
  149. package/dist/spa/src/components/icons/IconCommunity.vue +0 -7
  150. package/dist/spa/src/components/icons/IconDocumentation.vue +0 -7
  151. package/dist/spa/src/components/icons/IconEcosystem.vue +0 -7
  152. package/dist/spa/src/components/icons/IconSupport.vue +0 -7
  153. package/dist/spa/src/components/icons/IconTime.vue +0 -5
  154. package/dist/spa/src/components/icons/IconTooling.vue +0 -19
  155. package/dist/spa/src/composables/useFrontendApi.ts +0 -26
  156. package/dist/spa/src/composables/useStores.ts +0 -127
  157. package/dist/spa/src/index.scss +0 -27
  158. package/dist/spa/src/main.ts +0 -18
  159. package/dist/spa/src/router/index.ts +0 -63
  160. package/dist/spa/src/spa_types/core.ts +0 -51
  161. package/dist/spa/src/stores/core.ts +0 -144
  162. package/dist/spa/src/stores/filters.ts +0 -22
  163. package/dist/spa/src/stores/modal.ts +0 -48
  164. package/dist/spa/src/stores/toast.ts +0 -15
  165. package/dist/spa/src/stores/user.ts +0 -72
  166. package/dist/spa/src/types/AdminForthConfig.ts +0 -1477
  167. package/dist/spa/src/types/FrontendAPI.ts +0 -121
  168. package/dist/spa/src/utils.ts +0 -103
  169. package/dist/spa/src/views/CreateView.vue +0 -156
  170. package/dist/spa/src/views/EditView.vue +0 -157
  171. package/dist/spa/src/views/ListView.vue +0 -258
  172. package/dist/spa/src/views/LoginView.vue +0 -160
  173. package/dist/spa/src/views/ResourceParent.vue +0 -17
  174. package/dist/spa/src/views/ShowView.vue +0 -184
  175. package/dist/spa/tailwind.config.js +0 -17
  176. package/dist/spa/tsconfig.app.json +0 -14
  177. package/dist/spa/tsconfig.json +0 -11
  178. package/dist/spa/tsconfig.node.json +0 -19
  179. package/dist/spa/vite.config.ts +0 -56
  180. package/index.ts +0 -428
  181. package/modules/codeInjector.ts +0 -736
  182. package/modules/configValidator.ts +0 -571
  183. package/modules/operationalResource.ts +0 -98
  184. package/modules/restApi.ts +0 -718
  185. package/modules/styleGenerator.ts +0 -55
  186. package/modules/styles.ts +0 -126
  187. package/modules/utils.ts +0 -472
  188. package/servers/express.ts +0 -259
  189. package/spa/.eslintrc.cjs +0 -14
  190. package/spa/README.md +0 -39
  191. package/spa/env.d.ts +0 -1
  192. package/spa/index.html +0 -23
  193. package/spa/package-lock.json +0 -4602
  194. package/spa/package.json +0 -51
  195. package/spa/postcss.config.js +0 -6
  196. package/spa/public/assets/favicon.png +0 -0
  197. package/spa/src/App.vue +0 -418
  198. package/spa/src/assets/base.css +0 -2
  199. package/spa/src/assets/logo.svg +0 -19
  200. package/spa/src/components/AcceptModal.vue +0 -45
  201. package/spa/src/components/Breadcrumbs.vue +0 -41
  202. package/spa/src/components/BreadcrumbsWithButtons.vue +0 -26
  203. package/spa/src/components/CustomDatePicker.vue +0 -176
  204. package/spa/src/components/CustomDateRangePicker.vue +0 -218
  205. package/spa/src/components/CustomRangePicker.vue +0 -156
  206. package/spa/src/components/Dropdown.vue +0 -168
  207. package/spa/src/components/Filters.vue +0 -222
  208. package/spa/src/components/HelloWorld.vue +0 -17
  209. package/spa/src/components/MenuLink.vue +0 -27
  210. package/spa/src/components/ResourceForm.vue +0 -290
  211. package/spa/src/components/ResourceListTable.vue +0 -466
  212. package/spa/src/components/SingleSkeletLoader.vue +0 -13
  213. package/spa/src/components/SkeleteLoader.vue +0 -23
  214. package/spa/src/components/ThreeDotsMenu.vue +0 -43
  215. package/spa/src/components/Toast.vue +0 -78
  216. package/spa/src/components/ValueRenderer.vue +0 -114
  217. package/spa/src/components/icons/IconCalendar.vue +0 -5
  218. package/spa/src/components/icons/IconCommunity.vue +0 -7
  219. package/spa/src/components/icons/IconDocumentation.vue +0 -7
  220. package/spa/src/components/icons/IconEcosystem.vue +0 -7
  221. package/spa/src/components/icons/IconSupport.vue +0 -7
  222. package/spa/src/components/icons/IconTime.vue +0 -5
  223. package/spa/src/components/icons/IconTooling.vue +0 -19
  224. package/spa/src/composables/useFrontendApi.ts +0 -26
  225. package/spa/src/composables/useStores.ts +0 -131
  226. package/spa/src/index.scss +0 -31
  227. package/spa/src/main.ts +0 -18
  228. package/spa/src/renderers/CompactUUID.vue +0 -48
  229. package/spa/src/renderers/CountryFlag.vue +0 -69
  230. package/spa/src/router/index.ts +0 -59
  231. package/spa/src/spa_types/core.ts +0 -53
  232. package/spa/src/stores/core.ts +0 -148
  233. package/spa/src/stores/filters.ts +0 -27
  234. package/spa/src/stores/modal.ts +0 -48
  235. package/spa/src/stores/toast.ts +0 -31
  236. package/spa/src/stores/user.ts +0 -72
  237. package/spa/src/utils.ts +0 -160
  238. package/spa/src/views/CreateView.vue +0 -167
  239. package/spa/src/views/EditView.vue +0 -170
  240. package/spa/src/views/ListView.vue +0 -352
  241. package/spa/src/views/LoginView.vue +0 -192
  242. package/spa/src/views/ResourceParent.vue +0 -17
  243. package/spa/src/views/ShowView.vue +0 -186
  244. package/spa/tailwind.config.js +0 -17
  245. package/spa/tsconfig.app.json +0 -14
  246. package/spa/tsconfig.json +0 -11
  247. package/spa/tsconfig.node.json +0 -19
  248. package/spa/vite.config.ts +0 -56
  249. package/tsconfig.json +0 -112
  250. package/types/AdminForthConfig.ts +0 -1762
@@ -0,0 +1,92 @@
1
+ import { AdminForthFilterOperators, AdminForthSortDirections, IAdminForthDataSourceConnector, AdminForthResource, AdminForthResourceColumn } from '../types/AdminForthConfig.js';
2
+ import AdminForthBaseConnector from './baseConnector.js';
3
+ declare class ClickhouseConnector extends AdminForthBaseConnector implements IAdminForthDataSourceConnector {
4
+ client: any;
5
+ dbName: string;
6
+ url: string;
7
+ /**
8
+ * url: http[s]://[username:password@]hostname:port[/database][?param1=value1&param2=value2]
9
+ * @param param0
10
+ */
11
+ constructor({ url }: {
12
+ url: string;
13
+ });
14
+ discoverFields(resource: AdminForthResource): Promise<{
15
+ [key: string]: AdminForthResourceColumn;
16
+ }>;
17
+ getFieldValue(field: AdminForthResourceColumn, value: any): any;
18
+ setFieldValue(field: AdminForthResourceColumn, value: any): any;
19
+ OperatorsMap: {
20
+ eq: string;
21
+ ne: string;
22
+ gt: string;
23
+ lt: string;
24
+ gte: string;
25
+ lte: string;
26
+ like: string;
27
+ ilike: string;
28
+ in: string;
29
+ nin: string;
30
+ };
31
+ SortDirectionsMap: {
32
+ asc: string;
33
+ desc: string;
34
+ };
35
+ whereClause(resource: AdminForthResource, filters: {
36
+ field: string;
37
+ operator: AdminForthFilterOperators;
38
+ value: any;
39
+ }[]): string;
40
+ whereParams(filters: {
41
+ field: string;
42
+ operator: AdminForthFilterOperators;
43
+ value: any;
44
+ }[]): any;
45
+ getDataWithOriginalTypes({ resource, limit, offset, sort, filters }: {
46
+ resource: AdminForthResource;
47
+ limit: number;
48
+ offset: number;
49
+ sort: {
50
+ field: string;
51
+ direction: AdminForthSortDirections;
52
+ }[];
53
+ filters: {
54
+ field: string;
55
+ operator: AdminForthFilterOperators;
56
+ value: any;
57
+ }[];
58
+ }): Promise<any[]>;
59
+ getCount({ resource, filters, }: {
60
+ resource: AdminForthResource;
61
+ filters: {
62
+ field: string;
63
+ operator: AdminForthFilterOperators;
64
+ value: any;
65
+ }[];
66
+ }): Promise<number>;
67
+ getMinMaxForColumnsWithOriginalTypes({ resource, columns }: {
68
+ resource: AdminForthResource;
69
+ columns: AdminForthResourceColumn[];
70
+ }): Promise<{
71
+ [key: string]: {
72
+ min: any;
73
+ max: any;
74
+ };
75
+ }>;
76
+ createRecordOriginalValues({ resource, record }: {
77
+ resource: AdminForthResource;
78
+ record: any;
79
+ }): Promise<void>;
80
+ updateRecordOriginalValues({ resource, recordId, newValues }: {
81
+ resource: AdminForthResource;
82
+ recordId: any;
83
+ newValues: any;
84
+ }): Promise<void>;
85
+ deleteRecord({ resource, recordId }: {
86
+ resource: AdminForthResource;
87
+ recordId: any;
88
+ }): Promise<boolean>;
89
+ close(): void;
90
+ }
91
+ export default ClickhouseConnector;
92
+ //# sourceMappingURL=clickhouse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clickhouse.d.ts","sourceRoot":"","sources":["../../dataConnectors/clickhouse.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,3 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import { AdminForthDataTypes, AdminForthFilterOperators, AdminForthSortDirections } from '../types/AdminForthConfig.js';
11
2
  import AdminForthBaseConnector from './baseConnector.js';
12
3
  import dayjs from 'dayjs';
@@ -53,68 +44,66 @@ class ClickhouseConnector extends AdminForthBaseConnector {
53
44
  // }
54
45
  });
55
46
  }
56
- discoverFields(resource) {
57
- return __awaiter(this, void 0, void 0, function* () {
58
- const tableName = resource.table;
59
- let rows;
60
- try {
61
- const q = yield this.client.query({
62
- query: `SELECT * FROM system.columns WHERE table = '${tableName}' and database = '${this.dbName}'`,
63
- format: 'JSONEachRow',
64
- });
65
- rows = yield q.json();
47
+ async discoverFields(resource) {
48
+ const tableName = resource.table;
49
+ let rows;
50
+ try {
51
+ const q = await this.client.query({
52
+ query: `SELECT * FROM system.columns WHERE table = '${tableName}' and database = '${this.dbName}'`,
53
+ format: 'JSONEachRow',
54
+ });
55
+ rows = await q.json();
56
+ }
57
+ catch (e) {
58
+ console.error(` 🛑Error connecting to datasource URL ${this.url}:`, e);
59
+ return null;
60
+ }
61
+ const fieldTypes = {};
62
+ rows.forEach((row) => {
63
+ const field = {};
64
+ const baseType = row.type;
65
+ if (baseType.startsWith('Int') || baseType.startsWith('UInt')) {
66
+ field.type = AdminForthDataTypes.INTEGER;
66
67
  }
67
- catch (e) {
68
- console.error(` 🛑Error connecting to datasource URL ${this.url}:`, e);
69
- return null;
68
+ else if (baseType === 'FixedString' || baseType === 'String') {
69
+ field.type = AdminForthDataTypes.STRING;
70
+ // TODO
71
+ // const length = baseType.match(/\d+/g);
72
+ // field.maxLength = length ? parseInt(length[0]) : null;
70
73
  }
71
- const fieldTypes = {};
72
- rows.forEach((row) => {
73
- const field = {};
74
- const baseType = row.type;
75
- if (baseType.startsWith('Int') || baseType.startsWith('UInt')) {
76
- field.type = AdminForthDataTypes.INTEGER;
77
- }
78
- else if (baseType === 'FixedString' || baseType === 'String') {
79
- field.type = AdminForthDataTypes.STRING;
80
- // TODO
81
- // const length = baseType.match(/\d+/g);
82
- // field.maxLength = length ? parseInt(length[0]) : null;
83
- }
84
- else if (baseType == 'UUID') {
85
- field.type = AdminForthDataTypes.STRING;
86
- }
87
- else if (baseType.startsWith('Decimal')) {
88
- field.type = AdminForthDataTypes.DECIMAL;
89
- const [precision, scale] = baseType.match(/\d+/g);
90
- field.precision = parseInt(precision);
91
- field.scale = parseInt(scale);
92
- }
93
- else if (baseType.startsWith('Float')) {
94
- field.type = AdminForthDataTypes.FLOAT;
95
- }
96
- else if (baseType == 'DateTime64' || baseType == 'DateTime') {
97
- field.type = AdminForthDataTypes.DATETIME;
98
- }
99
- else if (baseType == 'Date' || baseType == 'Date64') {
100
- field.type = AdminForthDataTypes.DATE;
101
- }
102
- else if (baseType == 'Boolean') {
103
- field.type = AdminForthDataTypes.BOOLEAN;
104
- field._underlineType = 'boolean';
105
- }
106
- else {
107
- field.type = 'unknown';
108
- }
109
- field._underlineType = baseType;
110
- field._baseTypeDebug = baseType;
111
- field.required = row.notnull == 1;
112
- field.primaryKey = row.pk == 1;
113
- field.default = row.dflt_value;
114
- fieldTypes[row.name] = field;
115
- });
116
- return fieldTypes;
74
+ else if (baseType == 'UUID') {
75
+ field.type = AdminForthDataTypes.STRING;
76
+ }
77
+ else if (baseType.startsWith('Decimal')) {
78
+ field.type = AdminForthDataTypes.DECIMAL;
79
+ const [precision, scale] = baseType.match(/\d+/g);
80
+ field.precision = parseInt(precision);
81
+ field.scale = parseInt(scale);
82
+ }
83
+ else if (baseType.startsWith('Float')) {
84
+ field.type = AdminForthDataTypes.FLOAT;
85
+ }
86
+ else if (baseType == 'DateTime64' || baseType == 'DateTime' || baseType.startsWith('DateTime64(')) {
87
+ field.type = AdminForthDataTypes.DATETIME;
88
+ }
89
+ else if (baseType == 'Date' || baseType == 'Date64') {
90
+ field.type = AdminForthDataTypes.DATE;
91
+ }
92
+ else if (baseType == 'Boolean' || baseType == 'Bool') {
93
+ field.type = AdminForthDataTypes.BOOLEAN;
94
+ field._underlineType = 'boolean';
95
+ }
96
+ else {
97
+ field.type = 'unknown';
98
+ }
99
+ field._underlineType = baseType;
100
+ field._baseTypeDebug = baseType;
101
+ field.required = row.notnull == 1;
102
+ field.primaryKey = row.pk == 1;
103
+ field.default = row.dflt_value;
104
+ fieldTypes[row.name] = field;
117
105
  });
106
+ return fieldTypes;
118
107
  }
119
108
  getFieldValue(field, value) {
120
109
  if (field.type == AdminForthDataTypes.DATETIME) {
@@ -145,7 +134,12 @@ class ClickhouseConnector extends AdminForthBaseConnector {
145
134
  }
146
135
  else if (field.type == AdminForthDataTypes.JSON) {
147
136
  if (field._underlineType.startsWith('String') || field._underlineType.startsWith('FixedString')) {
148
- return JSON.parse(value);
137
+ try {
138
+ return JSON.parse(value);
139
+ }
140
+ catch (e) {
141
+ return { 'error': `Failed to parse JSON: ${e.message}` };
142
+ }
149
143
  }
150
144
  else {
151
145
  console.error(`AdminForth: JSON field is not a string but ${field._underlineType}, this is not supported yet`);
@@ -215,100 +209,89 @@ class ClickhouseConnector extends AdminForthBaseConnector {
215
209
  }) : [];
216
210
  return params;
217
211
  }
218
- getDataWithOriginalTypes(_a) {
219
- return __awaiter(this, arguments, void 0, function* ({ resource, limit, offset, sort, filters }) {
220
- console.log('getDataWithOriginalTypes', resource, limit, offset, sort, filters);
221
- const columns = resource.dataSourceColumns.map((col) => col.name).join(', ');
222
- const tableName = resource.table;
223
- const where = this.whereClause(resource, filters);
224
- const params = this.whereParams(filters);
225
- const orderBy = sort.length ? `ORDER BY ${sort.map((s) => `${s.field} ${this.SortDirectionsMap[s.direction]}`).join(', ')}` : '';
226
- const q = `SELECT ${columns} FROM ${tableName} ${where} ${orderBy} LIMIT {limit:Int} OFFSET {offset:Int}`;
227
- const d = Object.assign(Object.assign({}, params), { limit,
228
- offset });
229
- const stmt = yield this.client.query({
230
- query: q,
231
- format: 'JSONEachRow',
232
- query_params: d,
233
- });
234
- const rows = yield stmt.json();
235
- return rows.map((row) => {
236
- const newRow = {};
237
- for (const [key, value] of Object.entries(row)) {
238
- newRow[key] = value;
239
- }
240
- return newRow;
241
- });
212
+ async getDataWithOriginalTypes({ resource, limit, offset, sort, filters }) {
213
+ console.log('getDataWithOriginalTypes', resource, limit, offset, sort, filters);
214
+ const columns = resource.dataSourceColumns.map((col) => col.name).join(', ');
215
+ const tableName = resource.table;
216
+ const where = this.whereClause(resource, filters);
217
+ const params = this.whereParams(filters);
218
+ const orderBy = sort.length ? `ORDER BY ${sort.map((s) => `${s.field} ${this.SortDirectionsMap[s.direction]}`).join(', ')}` : '';
219
+ const q = `SELECT ${columns} FROM ${tableName} ${where} ${orderBy} LIMIT {limit:Int} OFFSET {offset:Int}`;
220
+ const d = Object.assign(Object.assign({}, params), { limit,
221
+ offset });
222
+ const stmt = await this.client.query({
223
+ query: q,
224
+ format: 'JSONEachRow',
225
+ query_params: d,
242
226
  });
243
- }
244
- getCount(_a) {
245
- return __awaiter(this, arguments, void 0, function* ({ resource, filters, }) {
246
- const tableName = resource.table;
247
- const where = this.whereClause(resource, filters);
248
- const d = this.whereParams(filters);
249
- const countQ = yield this.client.query({
250
- query: `SELECT COUNT(*) as count FROM ${tableName} ${where}`,
251
- format: 'JSONEachRow',
252
- query_params: d,
253
- });
254
- const countResp = yield countQ.json();
255
- return +countResp[0]['count'];
227
+ const rows = await stmt.json();
228
+ return rows.map((row) => {
229
+ const newRow = {};
230
+ for (const [key, value] of Object.entries(row)) {
231
+ newRow[key] = value;
232
+ }
233
+ return newRow;
256
234
  });
257
235
  }
258
- getMinMaxForColumnsWithOriginalTypes(_a) {
259
- return __awaiter(this, arguments, void 0, function* ({ resource, columns }) {
260
- const tableName = resource.table;
261
- const result = {};
262
- yield Promise.all(columns.map((col) => __awaiter(this, void 0, void 0, function* () {
263
- const stmt = yield this.client.query({
264
- query: `SELECT MIN(${col.name}) as min, MAX(${col.name}) as max FROM ${tableName}`,
265
- format: 'JSONEachRow',
266
- });
267
- const rows = yield stmt.json();
268
- result[col.name] = {
269
- min: rows[0].min,
270
- max: rows[0].max,
271
- };
272
- })));
273
- return result;
236
+ async getCount({ resource, filters, }) {
237
+ const tableName = resource.table;
238
+ const where = this.whereClause(resource, filters);
239
+ const d = this.whereParams(filters);
240
+ const countQ = await this.client.query({
241
+ query: `SELECT COUNT(*) as count FROM ${tableName} ${where}`,
242
+ format: 'JSONEachRow',
243
+ query_params: d,
274
244
  });
245
+ const countResp = await countQ.json();
246
+ return +countResp[0]['count'];
275
247
  }
276
- createRecordOriginalValues(_a) {
277
- return __awaiter(this, arguments, void 0, function* ({ resource, record }) {
278
- const tableName = resource.table;
279
- const columns = Object.keys(record);
280
- yield this.client.insert({
281
- database: this.dbName,
282
- table: tableName,
283
- columns: columns,
284
- values: [Object.values(record)],
248
+ async getMinMaxForColumnsWithOriginalTypes({ resource, columns }) {
249
+ const tableName = resource.table;
250
+ const result = {};
251
+ await Promise.all(columns.map(async (col) => {
252
+ const stmt = await this.client.query({
253
+ query: `SELECT MIN(${col.name}) as min, MAX(${col.name}) as max FROM ${tableName}`,
254
+ format: 'JSONEachRow',
285
255
  });
256
+ const rows = await stmt.json();
257
+ result[col.name] = {
258
+ min: rows[0].min,
259
+ max: rows[0].max,
260
+ };
261
+ }));
262
+ return result;
263
+ }
264
+ async createRecordOriginalValues({ resource, record }) {
265
+ const tableName = resource.table;
266
+ const columns = Object.keys(record);
267
+ await this.client.insert({
268
+ database: this.dbName,
269
+ table: tableName,
270
+ columns: columns,
271
+ values: [Object.values(record)],
286
272
  });
287
273
  }
288
- updateRecordOriginalValues(_a) {
289
- return __awaiter(this, arguments, void 0, function* ({ resource, recordId, newValues }) {
290
- const columnsWithPlaceholders = Object.keys(newValues).map((col) => {
291
- return `${col} = {${col}:${resource.dataSourceColumns.find((c) => c.name == col)._underlineType}}`;
292
- });
293
- yield this.client.command({
294
- query: `ALTER TABLE ${this.dbName}.${resource.table} UPDATE ${columnsWithPlaceholders.join(', ')} WHERE ${this.getPrimaryKey(resource)} = {recordId:${resource.dataSourceColumns.find((c) => c.primaryKey)._underlineType}}`,
295
- query_params: Object.assign(Object.assign({}, newValues), { recordId }),
296
- });
274
+ async updateRecordOriginalValues({ resource, recordId, newValues }) {
275
+ const columnsWithPlaceholders = Object.keys(newValues).map((col) => {
276
+ return `${col} = {${col}:${resource.dataSourceColumns.find((c) => c.name == col)._underlineType}}`;
277
+ });
278
+ await this.client.command({
279
+ query: `ALTER TABLE ${this.dbName}.${resource.table} UPDATE ${columnsWithPlaceholders.join(', ')} WHERE ${this.getPrimaryKey(resource)} = {recordId:${resource.dataSourceColumns.find((c) => c.primaryKey)._underlineType}}`,
280
+ query_params: Object.assign(Object.assign({}, newValues), { recordId }),
297
281
  });
298
282
  }
299
- deleteRecord(_a) {
300
- return __awaiter(this, arguments, void 0, function* ({ resource, recordId }) {
301
- const pkColumn = resource.dataSourceColumns.find((col) => col.primaryKey);
302
- const res = yield this.client.command({
303
- query: `ALTER TABLE ${this.dbName}.${resource.table} DELETE WHERE ${pkColumn.name} = {recordId:${pkColumn._underlineType}}`,
304
- query_params: { recordId },
305
- });
306
- // todo test what is in res
307
- return res;
283
+ async deleteRecord({ resource, recordId }) {
284
+ const pkColumn = resource.dataSourceColumns.find((col) => col.primaryKey);
285
+ const res = await this.client.command({
286
+ query: `ALTER TABLE ${this.dbName}.${resource.table} DELETE WHERE ${pkColumn.name} = {recordId:${pkColumn._underlineType}}`,
287
+ query_params: { recordId },
308
288
  });
289
+ // todo test what is in res
290
+ return res;
309
291
  }
310
292
  close() {
311
293
  this.client.disconnect();
312
294
  }
313
295
  }
314
296
  export default ClickhouseConnector;
297
+ //# sourceMappingURL=clickhouse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clickhouse.js","sourceRoot":"","sources":["../../dataConnectors/clickhouse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ import { MongoClient } from 'mongodb';
2
+ import { AdminForthFilterOperators, AdminForthSortDirections, IAdminForthDataSourceConnector, AdminForthResource } from '../types/AdminForthConfig.js';
3
+ import AdminForthBaseConnector from './baseConnector.js';
4
+ declare class MongoConnector extends AdminForthBaseConnector implements IAdminForthDataSourceConnector {
5
+ db: MongoClient;
6
+ constructor({ url }: {
7
+ url: string;
8
+ });
9
+ OperatorsMap: {
10
+ eq: (value: any) => any;
11
+ ne: (value: any) => {
12
+ $ne: any;
13
+ };
14
+ gt: (value: any) => {
15
+ $gt: any;
16
+ };
17
+ lt: (value: any) => {
18
+ $lt: any;
19
+ };
20
+ gte: (value: any) => {
21
+ $gte: any;
22
+ };
23
+ lte: (value: any) => {
24
+ $lte: any;
25
+ };
26
+ like: (value: any) => {
27
+ $regex: any;
28
+ };
29
+ ilike: (value: any) => {
30
+ $regex: any;
31
+ $options: string;
32
+ };
33
+ in: (value: any) => {
34
+ $in: any;
35
+ };
36
+ nin: (value: any) => {
37
+ $nin: any;
38
+ };
39
+ };
40
+ SortDirectionsMap: {
41
+ asc: number;
42
+ desc: number;
43
+ };
44
+ discoverFields(resource: any): Promise<any>;
45
+ getPrimaryKey(resource: any): any;
46
+ getFieldValue(field: any, value: any): any;
47
+ setFieldValue(field: any, value: any): any;
48
+ genQuery({ filters }: {
49
+ filters: any;
50
+ }): Promise<{}>;
51
+ getDataWithOriginalTypes({ resource, limit, offset, sort, filters }: {
52
+ resource: AdminForthResource;
53
+ limit: number;
54
+ offset: number;
55
+ sort: {
56
+ field: string;
57
+ direction: AdminForthSortDirections;
58
+ }[];
59
+ filters: {
60
+ field: string;
61
+ operator: AdminForthFilterOperators;
62
+ value: any;
63
+ }[];
64
+ }): Promise<any[]>;
65
+ getCount({ resource, filters }: {
66
+ resource: AdminForthResource;
67
+ filters: {
68
+ field: string;
69
+ operator: AdminForthFilterOperators;
70
+ value: any;
71
+ }[];
72
+ }): Promise<number>;
73
+ getMinMaxForColumnsWithOriginalTypes({ resource, columns }: {
74
+ resource: any;
75
+ columns: any;
76
+ }): Promise<{}>;
77
+ createRecordOriginalValues({ resource, record }: {
78
+ resource: any;
79
+ record: any;
80
+ }): Promise<void>;
81
+ updateRecordOriginalValues({ resource, recordId, newValues }: {
82
+ resource: any;
83
+ recordId: any;
84
+ newValues: any;
85
+ }): Promise<void>;
86
+ deleteRecord({ resource, recordId }: {
87
+ resource: any;
88
+ recordId: any;
89
+ }): Promise<boolean>;
90
+ close(): Promise<void>;
91
+ }
92
+ export default MongoConnector;
93
+ //# sourceMappingURL=mongo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongo.d.ts","sourceRoot":"","sources":["../../dataConnectors/mongo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAuB,yBAAyB,EAAE,wBAAwB,EAC7E,8BAA8B,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAC7F,OAAO,uBAAuB,MAAM,oBAAoB,CAAC;AAEzD,cAAM,cAAe,SAAQ,uBAAwB,YAAW,8BAA8B;IAC1F,EAAE,EAAE,WAAW,CAAA;gBAEH,EAAE,GAAG,EAAE,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE;IAgBpC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAWV;IAEF,iBAAiB;;;MAGf;IAEI,cAAc,CAAC,QAAQ,KAAA;IAiB7B,aAAa,CAAC,QAAQ,KAAA;IAQtB,aAAa,CAAC,KAAK,KAAA,EAAE,KAAK,KAAA;IAuB1B,aAAa,CAAC,KAAK,KAAA,EAAE,KAAK,KAAA;IAkBpB,QAAQ,CAAC,EAAE,OAAO,EAAE;;KAAA;IAQpB,wBAAwB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EACrE;QACI,QAAQ,EAAE,kBAAkB,CAAC;QAC7B,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,wBAAwB,CAAA;SAAE,EAAE,CAAC;QAC/D,OAAO,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,yBAAyB,CAAC;YAAC,KAAK,EAAE,GAAG,CAAA;SAAE,EAAE,CAAA;KAChF,GACF,OAAO,CAAC,GAAG,EAAE,CAAC;IAqBX,QAAQ,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;QAC9B,QAAQ,EAAE,kBAAkB,CAAC;QAC7B,OAAO,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,yBAAyB,CAAC;YAAC,KAAK,EAAE,GAAG,CAAA;SAAE,EAAE,CAAA;KACpF,GAAG,OAAO,CAAC,MAAM,CAAC;IAUb,oCAAoC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE;;;KAAA;IAc1D,0BAA0B,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE;;;KAAA;IAW/C,0BAA0B,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE;;;;KAAA;IAK5D,YAAY,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE;;;KAAA,GAAG,OAAO,CAAC,OAAO,CAAC;IAOtD,KAAK;CAGd;AAED,eAAe,cAAc,CAAC"}