@steedos/objectql 2.2.50 → 2.2.51-beta.4

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 (143) hide show
  1. package/lib/services/helpers/graphql/consts.d.ts +17 -0
  2. package/lib/services/helpers/graphql/consts.js +28 -0
  3. package/lib/services/helpers/graphql/consts.js.map +1 -0
  4. package/lib/services/helpers/graphql/getQueryFields.js +17 -2
  5. package/lib/services/helpers/graphql/getQueryFields.js.map +1 -1
  6. package/lib/services/helpers/graphql/index.d.ts +1 -1
  7. package/lib/services/helpers/graphql/index.js +31 -46
  8. package/lib/services/helpers/graphql/index.js.map +1 -1
  9. package/lib/util/index.js +7 -0
  10. package/lib/util/index.js.map +1 -1
  11. package/package.json +11 -12
  12. package/src/actions/field_updates.ts +0 -118
  13. package/src/actions/index.ts +0 -3
  14. package/src/actions/types/field_update_target.ts +0 -7
  15. package/src/actions/types/workflow_notification.ts +0 -9
  16. package/src/actions/types/workflow_rule.ts +0 -11
  17. package/src/actions/workflow_notifications.ts +0 -81
  18. package/src/actions/workflow_rule.ts +0 -136
  19. package/src/driver/driver.ts +0 -102
  20. package/src/driver/field-encrytion/index.ts +0 -8
  21. package/src/driver/field-encrytion/sharedconst.ts +0 -34
  22. package/src/driver/fieldDBType.ts +0 -14
  23. package/src/driver/format.ts +0 -36
  24. package/src/driver/index.ts +0 -20
  25. package/src/driver/metadata.ts +0 -226
  26. package/src/driver/meteorMongo.ts +0 -639
  27. package/src/driver/mongo.ts +0 -416
  28. package/src/driver/mysql.ts +0 -47
  29. package/src/driver/oracle.ts +0 -60
  30. package/src/driver/postgres.ts +0 -46
  31. package/src/driver/sqlite3.ts +0 -40
  32. package/src/driver/sqlserver.ts +0 -52
  33. package/src/dynamic-load/actions.ts +0 -146
  34. package/src/dynamic-load/approval_process.ts +0 -73
  35. package/src/dynamic-load/button.ts +0 -75
  36. package/src/dynamic-load/chart.ts +0 -22
  37. package/src/dynamic-load/client_script.ts +0 -65
  38. package/src/dynamic-load/field.ts +0 -77
  39. package/src/dynamic-load/flow_role.ts +0 -46
  40. package/src/dynamic-load/index.ts +0 -21
  41. package/src/dynamic-load/layout.ts +0 -53
  42. package/src/dynamic-load/listview.ts +0 -57
  43. package/src/dynamic-load/method.ts +0 -63
  44. package/src/dynamic-load/object_translations.ts +0 -61
  45. package/src/dynamic-load/originalObject.ts +0 -8
  46. package/src/dynamic-load/package.ts +0 -312
  47. package/src/dynamic-load/page.ts +0 -23
  48. package/src/dynamic-load/permission.ts +0 -71
  49. package/src/dynamic-load/permissionset.ts +0 -78
  50. package/src/dynamic-load/preload_data.ts +0 -104
  51. package/src/dynamic-load/profile.ts +0 -90
  52. package/src/dynamic-load/query.ts +0 -22
  53. package/src/dynamic-load/restrictionRules.ts +0 -23
  54. package/src/dynamic-load/role.ts +0 -46
  55. package/src/dynamic-load/shareRules.ts +0 -23
  56. package/src/dynamic-load/tab.ts +0 -17
  57. package/src/dynamic-load/tabs.ts +0 -13
  58. package/src/dynamic-load/translations.ts +0 -54
  59. package/src/dynamic-load/trigger.ts +0 -236
  60. package/src/dynamic-load/validation_rule.ts +0 -77
  61. package/src/dynamic-load/workflow.ts +0 -114
  62. package/src/errors/index.ts +0 -111
  63. package/src/formula/core.ts +0 -490
  64. package/src/formula/field_formula.ts +0 -107
  65. package/src/formula/index.ts +0 -81
  66. package/src/formula/params.ts +0 -197
  67. package/src/formula/recompute.ts +0 -65
  68. package/src/formula/simple_params.ts +0 -92
  69. package/src/formula/type.ts +0 -107
  70. package/src/formula/util.ts +0 -207
  71. package/src/index.ts +0 -24
  72. package/src/metadata-register/_base.ts +0 -85
  73. package/src/metadata-register/app.ts +0 -30
  74. package/src/metadata-register/chart.ts +0 -9
  75. package/src/metadata-register/index.ts +0 -123
  76. package/src/metadata-register/layout.ts +0 -38
  77. package/src/metadata-register/object.ts +0 -68
  78. package/src/metadata-register/page.ts +0 -9
  79. package/src/metadata-register/permissionFields.ts +0 -13
  80. package/src/metadata-register/permissionset.ts +0 -25
  81. package/src/metadata-register/process.ts +0 -16
  82. package/src/metadata-register/processTrigger.ts +0 -24
  83. package/src/metadata-register/profile.ts +0 -25
  84. package/src/metadata-register/query.ts +0 -9
  85. package/src/metadata-register/restrictionRules.ts +0 -12
  86. package/src/metadata-register/shareRules.ts +0 -13
  87. package/src/metadata-register/tab.ts +0 -9
  88. package/src/metadata-register/tabs.ts +0 -43
  89. package/src/services/datasourceServiceFactory.ts +0 -55
  90. package/src/services/helpers/graphql/getPrimaryFieldType.ts +0 -48
  91. package/src/services/helpers/graphql/getQueryFields.ts +0 -36
  92. package/src/services/helpers/graphql/index.ts +0 -681
  93. package/src/services/helpers/rest.ts +0 -57
  94. package/src/services/index.ts +0 -13
  95. package/src/services/objectService.ts +0 -846
  96. package/src/services/objectServiceDispatcher.ts +0 -209
  97. package/src/services/objectServiceFactory.ts +0 -29
  98. package/src/summary/core.ts +0 -263
  99. package/src/summary/field_summary.ts +0 -71
  100. package/src/summary/index.ts +0 -96
  101. package/src/summary/recompute.ts +0 -31
  102. package/src/summary/type.ts +0 -60
  103. package/src/ts-types/index.ts +0 -3
  104. package/src/ts-types/permissionset.ts +0 -8
  105. package/src/ts-types/profile.ts +0 -11
  106. package/src/ts-types/triggerActionParams.ts +0 -22
  107. package/src/typeorm/driver.ts +0 -379
  108. package/src/typeorm/index.ts +0 -3
  109. package/src/typeorm/util.ts +0 -147
  110. package/src/types/action.ts +0 -52
  111. package/src/types/app.ts +0 -280
  112. package/src/types/config.ts +0 -152
  113. package/src/types/connection.ts +0 -87
  114. package/src/types/dashboard.ts +0 -91
  115. package/src/types/datasource.ts +0 -570
  116. package/src/types/field.ts +0 -370
  117. package/src/types/field_permission.ts +0 -42
  118. package/src/types/field_types.ts +0 -1
  119. package/src/types/index.ts +0 -21
  120. package/src/types/list_view.ts +0 -56
  121. package/src/types/listeners.ts +0 -18
  122. package/src/types/object.ts +0 -2076
  123. package/src/types/object_dynamic_load.ts +0 -426
  124. package/src/types/object_events.ts +0 -43
  125. package/src/types/object_layouts.ts +0 -20
  126. package/src/types/object_permission.ts +0 -134
  127. package/src/types/query.ts +0 -28
  128. package/src/types/report.ts +0 -128
  129. package/src/types/restrictionRule.ts +0 -57
  130. package/src/types/schema.ts +0 -273
  131. package/src/types/shareRule.ts +0 -57
  132. package/src/types/trigger.ts +0 -88
  133. package/src/types/userSession.ts +0 -45
  134. package/src/types/validation_rules.ts +0 -29
  135. package/src/util/convert.ts +0 -131
  136. package/src/util/field.ts +0 -93
  137. package/src/util/function_expression.ts +0 -63
  138. package/src/util/index.ts +0 -1058
  139. package/src/util/locale.ts +0 -24
  140. package/src/util/permission_shares.ts +0 -25
  141. package/src/util/suffix.ts +0 -78
  142. package/src/util/transform.ts +0 -239
  143. package/src/validators/index.ts +0 -36
@@ -1,570 +0,0 @@
1
- import { Dictionary } from '@salesforce/ts-types';
2
- // import { initObjectFieldsSummarys } from '../summary';
3
- import { getObjectServiceName } from '../services/index';
4
- import {
5
- SteedosDriver,
6
- SteedosMongoDriver,
7
- SteedosMeteorMongoDriver,
8
- SteedosSqlite3Driver,
9
- SteedosSqlServerDriver,
10
- SteedosPostgresDriver,
11
- SteedosOracleDriver,
12
- SteedosMySqlDriver
13
- } from '../driver';
14
-
15
- import _ = require('lodash');
16
- import { SteedosQueryOptions, SteedosQueryFilters } from './query';
17
- import {
18
- SteedosIDType,
19
- SteedosObjectType,
20
- SteedosObjectTypeConfig,
21
- SteedosSchema,
22
- SteedosObjectPermissionTypeConfig,
23
- SteedosObjectPermissionType,
24
- getAppConfigs,
25
- getDashboardConfigs,
26
- getSteedosSchema,
27
- getObjectConfig,
28
- addAllConfigFiles
29
- } from '.';
30
- import { SteedosDriverConfig } from '../driver';
31
- import { getObjectDispatcher, createObjectService, createDataSourceService } from '../services/index';
32
- import path = require('path');
33
- let Fiber = require('fibers');
34
- const defaultDatasourceName = 'default';
35
- // const meteorDatasourceName = 'meteor';
36
- declare var Creator: any;
37
- export enum SteedosDatabaseDriverType {
38
- Mongo = 'mongo',
39
- MeteorMongo = 'meteor-mongo',
40
- Sqlite = 'sqlite',
41
- SqlServer = 'sqlserver',
42
- Postgres = 'postgres',
43
- Oracle = 'oracle',
44
- MySql = 'mysql'
45
- }
46
-
47
- export type SteedosDataSourceTypeConfig = {
48
- name?: string
49
- driver: SteedosDatabaseDriverType | string | SteedosDriver
50
- logging?: boolean | Array<any>
51
- url?: string
52
- host?: string,
53
- port?: number,
54
- username?: string
55
- password?: string,
56
- database?: string,
57
- connectString?: string,
58
- timezone?: string,
59
- options?: any
60
- objects?: Dictionary<SteedosObjectTypeConfig>
61
- objectFiles?: string[]
62
- objectsRolesPermission?: Dictionary<Dictionary<SteedosObjectPermissionTypeConfig>>
63
- getRoles?: Function //TODO 尚未开放此功能
64
- enable_space?: boolean
65
- locale?: string //指定新建数据库表的默认语言,如zh,可用于字段的默认排序
66
- }
67
-
68
- export class SteedosDataSourceType implements Dictionary {
69
- [key: string]: unknown;
70
- private _name: string;
71
- public get name(): string {
72
- return this._name;
73
- }
74
- private _adapter: SteedosDriver;
75
- public get adapter(): SteedosDriver {
76
- return this._adapter;
77
- }
78
- private _getRoles: Function;
79
- private _url: string;
80
- private _host: string;
81
- private _port: number;
82
- private _username?: string;
83
- private _password?: string;
84
- private _database?: string;
85
- private _connectString?: string;
86
- private _timezone?: string;
87
- private _options?: any;
88
- private _locale?: string;
89
- private _schema: SteedosSchema;
90
- private _objects: Dictionary<SteedosObjectType> = {};
91
- private _cacheObjects?: Array<SteedosObjectType> = [];
92
- public get cacheObjects(): any {
93
- return this._cacheObjects;
94
- }
95
- public set cacheObjects(value: any) {
96
- this._cacheObjects = value;
97
- }
98
- private _service?: any;
99
- public get service(): any {
100
- return this._service;
101
- }
102
- public set service(value: any) {
103
- this._service = value;
104
- }
105
-
106
- private _objectsConfig: Dictionary<SteedosObjectTypeConfig> = {};
107
- private _objectsRolesPermission: Dictionary<Dictionary<SteedosObjectPermissionType>> = {};
108
- private _objectsSpaceRolesPermission: Dictionary<Dictionary<Dictionary<SteedosObjectPermissionType>>> = {};
109
- private _driver: SteedosDatabaseDriverType | string | SteedosDriver;
110
- private _logging: boolean | Array<any>;
111
- private _config: SteedosDataSourceTypeConfig;
112
- private _enable_space: boolean;
113
- public get enable_space(): boolean {
114
- return this._enable_space;
115
- }
116
-
117
- public get config(): SteedosDataSourceTypeConfig {
118
- return this._config;
119
- }
120
- public set config(value: SteedosDataSourceTypeConfig) {
121
- this._config = value;
122
- }
123
-
124
- public get driver(): SteedosDatabaseDriverType | string | SteedosDriver {
125
- return this._driver;
126
- }
127
-
128
- async getObjects(useCache = true) {
129
- // if(!this.schema.metadataRegister){
130
- // return this._objects
131
- // }
132
- // return await this.schema.metadataRegister.getObjectsConfig(this.name);
133
- if(useCache === false){
134
- await this.flushCacheObjects();
135
- }
136
- return this.getCacheObjects();
137
- }
138
-
139
- getCacheObjects() {
140
- return this.cacheObjects;
141
- }
142
-
143
- async flushCacheObjects() {
144
- this.cacheObjects = await this.schema.metadataRegister.getObjectsConfig(this.name);
145
- }
146
-
147
- getLocalObjects() {
148
- return this._objects
149
- }
150
-
151
- setLocalObject(objectApiName, object){
152
- this._objects[objectApiName] = object;
153
- }
154
-
155
- getObject(objectApiName: string){
156
- const localObject = this.getLocalObject(objectApiName);
157
- if(localObject){
158
- return localObject;
159
- }
160
- return getObjectDispatcher(objectApiName)
161
- }
162
-
163
- getLocalObject(objectApiName: string) {
164
- return this._objects[objectApiName]
165
- }
166
-
167
- getObjectsConfig() {
168
- return this._objectsConfig;
169
- }
170
-
171
- getObjectConfig(objectName) {
172
- return this._objectsConfig[objectName];
173
- }
174
-
175
- async setObject(objectApiName: string, objectConfig: SteedosObjectTypeConfig) {
176
- const serviceName = getObjectServiceName(objectApiName)
177
- let object = new SteedosObjectType(objectApiName, this, objectConfig)
178
-
179
- this._objectsConfig[objectApiName] = objectConfig;
180
-
181
- const findIndex = _.findIndex(this.cacheObjects, (item: any) => { return item?.metadata?.name === objectApiName });
182
-
183
- if (findIndex != -1) {
184
- this.cacheObjects[findIndex] = Object.assign({ service: { name: serviceName } }, { metadata: objectConfig });
185
- } else {
186
- this.cacheObjects.push(Object.assign({ service: { name: serviceName } }, { metadata: objectConfig }));
187
- }
188
-
189
- this._objects[objectApiName] = object;
190
- await createObjectService(this._schema.metadataBroker, serviceName, objectConfig)
191
- return object;
192
- }
193
-
194
- removeObject(object_name: string){
195
- delete this._objectsConfig[object_name];
196
- delete this._objects[object_name];
197
- this.schema.removeObjectMap(object_name);
198
- this.schema.metadataRegister.removeObject(object_name)
199
- }
200
-
201
- initDriver() {
202
- let driverConfig: SteedosDriverConfig = {
203
- url: this._url,
204
- host: this._host,
205
- port: this._port,
206
- username: this._username,
207
- password: this._password,
208
- database: this._database,
209
- connectString: this._connectString,
210
- timezone: this._timezone,
211
- options: this._options,
212
- logging: this._logging,
213
- locale: this._locale
214
- }
215
-
216
- if (_.isString(this.config.driver)) {
217
- switch (this.config.driver) {
218
- case SteedosDatabaseDriverType.Mongo:
219
- this._adapter = new SteedosMongoDriver(driverConfig);
220
- break;
221
- case SteedosDatabaseDriverType.MeteorMongo:
222
- this._adapter = new SteedosMeteorMongoDriver(driverConfig);
223
- break;
224
- case SteedosDatabaseDriverType.Sqlite:
225
- this._adapter = new SteedosSqlite3Driver(driverConfig);
226
- break;
227
- case SteedosDatabaseDriverType.SqlServer:
228
- this._adapter = new SteedosSqlServerDriver(driverConfig);
229
- break;
230
- case SteedosDatabaseDriverType.Postgres:
231
- this._adapter = new SteedosPostgresDriver(driverConfig);
232
- break;
233
- case SteedosDatabaseDriverType.Oracle:
234
- this._adapter = new SteedosOracleDriver(driverConfig);
235
- break;
236
- case SteedosDatabaseDriverType.MySql:
237
- this._adapter = new SteedosMySqlDriver(driverConfig);
238
- break;
239
- default:
240
- throw new Error(`the driver ${this.config.driver} is not supported`)
241
- }
242
- } else {
243
- this._adapter = this.config.driver
244
- }
245
- }
246
-
247
- async initObject(objectConfig) {
248
- //从本地对象配置中读取触发器配置
249
- const localObjectConfig = getObjectConfig(objectConfig.name);
250
- if (localObjectConfig) {
251
- objectConfig.listeners = localObjectConfig.listeners;
252
- objectConfig.methods = localObjectConfig.methods;
253
- }
254
- if (this.name === "meteor") {
255
- try {
256
- const _db = Creator.createCollection(objectConfig)
257
- Creator.Collections[_db._name] = _db
258
- } catch (error) {
259
- // console.log(`error`, error) //此处无需打印日志,@steedos/core 在init Creator 时,会兼容此部分的异常逻辑。
260
- }
261
- }
262
- await this.setObject(objectConfig.name, objectConfig);
263
- }
264
-
265
- async initObjects() {
266
- // 从缓存中加载所有本数据源对象到datasource中
267
- let objects: Array<any> = this.cacheObjects;
268
- let self = this;
269
- for await (const object of _.values(objects)) {
270
- const objectConfig = object.metadata;
271
- await self.initObject(objectConfig)
272
- }
273
- return true;
274
- }
275
-
276
- constructor(datasource_name: string, config: SteedosDataSourceTypeConfig, schema: SteedosSchema) {
277
- this._name = datasource_name
278
- this.config = config
279
- this._url = config.url
280
- this._host = config.host
281
- this._port = config.port
282
- this._username = config.username
283
- this._password = config.password
284
- this._database = config.database
285
- this._connectString = config.connectString
286
- this._timezone = config.timezone
287
- this._options = config.options
288
- this._schema = schema
289
- this._driver = config.driver
290
- this._logging = config.logging
291
- this._locale = config.locale
292
- // TODO 非默认数据源开启enable_space:true,功能有问题,暂时关闭
293
- if(_.has(config, 'enable_space')){
294
- this._enable_space = config.enable_space
295
- }else{
296
- if(this._driver == SteedosDatabaseDriverType.MeteorMongo || (this._driver == SteedosDatabaseDriverType.Mongo && this.name === defaultDatasourceName)){
297
- this._enable_space = true
298
- }else{
299
- this._enable_space = false
300
- }
301
- }
302
-
303
- this.initDriver();
304
-
305
- if (config.getRoles && !_.isFunction(config.getRoles)) {
306
- throw new Error('getRoles must be a function')
307
- }
308
- this._getRoles = config.getRoles
309
- }
310
-
311
- async loadFiles(){
312
- // 不再支持从steedos-config中配置对象定义。
313
- // _.each(this.config.objects, (object, object_name) => {
314
- // object.name = object_name
315
- // addObjectConfig(object, this._name);
316
- // })
317
- // 添加对象到缓存
318
- for (const objectPath of this.config.objectFiles) {
319
- let filePath = objectPath;
320
- if(!path.isAbsolute(objectPath)){
321
- filePath = path.join(process.cwd(), objectPath)
322
- }
323
- await addAllConfigFiles(filePath, this._name, null)
324
- }
325
- }
326
-
327
- setObjectPermission(object_name: string, objectRolePermission: SteedosObjectPermissionTypeConfig) {
328
- let objectPermissions = this._objectsRolesPermission[object_name]
329
- if (!objectPermissions) {
330
- this._objectsRolesPermission[object_name] = {}
331
- }
332
- this._objectsRolesPermission[object_name][objectRolePermission.name] = new SteedosObjectPermissionType(object_name, objectRolePermission)
333
- }
334
-
335
- getObjectRolesPermission(object_name: string) {
336
- return this._objectsRolesPermission[object_name]
337
- }
338
-
339
- setObjectSpacePermission(object_name: string, spaceId: string, objectRolePermission: SteedosObjectPermissionTypeConfig) {
340
- let objectPermissions = this._objectsSpaceRolesPermission[object_name]
341
- if (!objectPermissions) {
342
- this._objectsSpaceRolesPermission[object_name] = {}
343
- }
344
- let objectSpacePermissions = this._objectsSpaceRolesPermission[object_name][spaceId]
345
- if (!objectSpacePermissions) {
346
- this._objectsSpaceRolesPermission[object_name][spaceId] = {}
347
- }
348
- this._objectsSpaceRolesPermission[object_name][spaceId][objectRolePermission.name] = new SteedosObjectPermissionType(object_name, objectRolePermission)
349
- }
350
-
351
- getObjectSpaceRolesPermission(object_name: string, spaceId: string) {
352
- if(this._objectsSpaceRolesPermission[object_name]){
353
- return this._objectsSpaceRolesPermission[object_name][spaceId]
354
- }
355
- }
356
-
357
- removeObjectSpacePermission(object_name: string, spaceId: string, objectRolePermissionName: string){
358
- if(this._objectsSpaceRolesPermission[object_name] && this._objectsSpaceRolesPermission[object_name][spaceId]){
359
- delete this._objectsSpaceRolesPermission[object_name][spaceId][objectRolePermissionName];
360
- }
361
- }
362
-
363
- async getRoles(userId: SteedosIDType) {
364
- if (this._getRoles) {
365
- return await this._getRoles(userId)
366
- } else {
367
- return ['admin']
368
- }
369
- }
370
-
371
- async find(tableName: string, query: SteedosQueryOptions, userId?: SteedosIDType) {
372
- return await this._adapter.find(tableName, query, userId)
373
- }
374
-
375
- async aggregate(tableName: string, query: SteedosQueryOptions, externalPipeline, userId?: SteedosIDType) {
376
- return await this._adapter.aggregate(tableName, query, externalPipeline, userId)
377
- }
378
-
379
- async findOne(tableName: string, id: SteedosIDType, query: SteedosQueryOptions, userId?: SteedosIDType) {
380
- return await this._adapter.findOne(tableName, id, query, userId)
381
- }
382
-
383
- async insert(tableName: string, doc: Dictionary<any>, userId?: SteedosIDType) {
384
- return await this._adapter.insert(tableName, doc, userId)
385
- }
386
-
387
- async update(tableName: string, id: SteedosIDType | SteedosQueryOptions, doc: Dictionary<any>, userId?: SteedosIDType) {
388
- return await this._adapter.update(tableName, id, doc, userId)
389
- }
390
-
391
- async updateOne(tableName: string, id: SteedosIDType | SteedosQueryOptions, doc: Dictionary<any>, userId?: SteedosIDType) {
392
- return await this._adapter.updateOne(tableName, id, doc, userId)
393
- }
394
-
395
- async updateMany(tableName: string, queryFilters: SteedosQueryFilters, doc: Dictionary<any>, userId?: SteedosIDType) {
396
- return await this._adapter.updateMany(tableName, queryFilters, doc, userId)
397
- }
398
-
399
- async delete(tableName: string, id: SteedosIDType | SteedosQueryOptions, userId?: SteedosIDType) {
400
- return await this._adapter.delete(tableName, id, userId)
401
- }
402
-
403
- formatRecord(doc: Dictionary<any>, objectConfig: SteedosObjectType) {
404
- const formatRecord = this._adapter.formatRecord
405
- if (typeof formatRecord === 'function') {
406
- return formatRecord(doc, objectConfig)
407
- }
408
- return doc
409
- }
410
-
411
- async count(tableName: string, query: SteedosQueryOptions, userId?: SteedosIDType) {
412
- return await this._adapter.count(tableName, query, userId)
413
- }
414
-
415
- async directFind(tableName: string, query: SteedosQueryOptions, userId?: SteedosIDType) {
416
- return await this._adapter.find(tableName, query, userId)
417
- }
418
-
419
- async directInsert(tableName: string, doc: Dictionary<any>, userId?: SteedosIDType) {
420
- return await this._adapter.directInsert(tableName, doc, userId)
421
- }
422
-
423
- async directUpdate(tableName: string, id: SteedosIDType | SteedosQueryOptions, doc: Dictionary<any>, userId?: SteedosIDType) {
424
- return await this._adapter.directUpdate(tableName, id, doc, userId)
425
- }
426
-
427
- async directDelete(tableName: string, id: SteedosIDType | SteedosQueryOptions, userId?: SteedosIDType) {
428
- return await this._adapter.directDelete(tableName, id, userId)
429
- }
430
-
431
- async directAggregate(tableName: string, query: SteedosQueryOptions, externalPipeline: any[], userId?: SteedosIDType) {
432
- return await this._adapter.directAggregate(tableName, query, externalPipeline, userId)
433
- }
434
-
435
- async directAggregatePrefixalPipeline(tableName: string, query: SteedosQueryOptions, prefixalPipeline: any[], userId?: SteedosIDType) {
436
- return await this._adapter.directAggregatePrefixalPipeline(tableName, query, prefixalPipeline, userId)
437
- }
438
-
439
- async _makeNewID(tableName: string){
440
- return await this._adapter._makeNewID(tableName)
441
- }
442
-
443
- public get schema(): SteedosSchema {
444
- return this._schema;
445
- }
446
-
447
- async dropEntities() {
448
- if (this._adapter.dropEntities) {
449
- return await this._adapter.dropEntities();
450
- }
451
- }
452
-
453
- registerEntities() {
454
- if (this._adapter.registerEntities) {
455
- return this._adapter.registerEntities(this._objects);
456
- }
457
- }
458
-
459
- async dropTables() {
460
- if (this._adapter.dropEntities) {
461
- return await this._adapter.dropEntities();
462
- }
463
- }
464
-
465
- async createTables() {
466
- if (this._adapter.createTables) {
467
- return await this._adapter.createTables(this._objects);
468
- }
469
- }
470
-
471
- async init() {
472
- // await this.flushCacheObjects();
473
- // await this.initObjects();
474
- this.initObjectPermissions();
475
- if (!this.service) {
476
- const broker = this._schema.metadataBroker
477
- this.service = await createDataSourceService(broker, this)
478
- }
479
- }
480
-
481
- /**
482
- * 初始化数据源上配置的对象权限。
483
- */
484
- initObjectPermissions() {
485
- _.each(this.config.objectsRolesPermission, (objectRolesPermission, object_name) => {
486
- _.each(objectRolesPermission, (objectRolePermission, role_name) => {
487
- objectRolePermission.name = role_name
488
- this.setObjectPermission(object_name, objectRolePermission)
489
- })
490
- })
491
- }
492
-
493
- initTypeORM() {
494
- const _objects = {};
495
- _.map(this.cacheObjects, (item) => {
496
- if(item && item.metadata){
497
- _objects[item.metadata.name] = item.metadata
498
- }
499
- })
500
-
501
- if (this._adapter.init) {
502
- let self = this;
503
- Fiber(function(){
504
- let fiber = Fiber.current;
505
- self._adapter.init(_objects).then(result => {
506
- fiber.run();
507
- }).catch(result => {
508
- console.error(result)
509
- fiber.run();
510
- })
511
- Fiber.yield();
512
- }).run();
513
- }
514
- }
515
-
516
- // 暂时保留,兼容creator bootstrap接口
517
- getAppsConfig() {
518
- return getAppConfigs()
519
- }
520
-
521
- getDashboardsConfig() {
522
- return getDashboardConfigs()
523
- }
524
-
525
- async connect() {
526
- // this.initObjects();
527
- // init typeorm
528
- if (this._adapter.connect)
529
- await this._adapter.connect()
530
- // init typeorm
531
- if (this._adapter.init)
532
- await this._adapter.init(this._objects)
533
- }
534
-
535
- async close() {
536
- if (this._adapter.close)
537
- this._adapter.close()
538
- }
539
-
540
- // 重命名库中表名
541
- async renameCollection(newObjectApiName: string, oldObjectApiName: string){
542
- if(this.driver === SteedosDatabaseDriverType.Mongo){
543
- const adapter = this.adapter;
544
- await adapter.connect();
545
- const collection = (adapter as any).collection(oldObjectApiName);
546
- const newCollection = (adapter as any).collection(newObjectApiName);
547
- let dropTarget = false;
548
- let count = await newCollection.count({});
549
- if (count == 0) {
550
- dropTarget = true;
551
- }
552
- return await collection.rename(newObjectApiName, { dropTarget: dropTarget });
553
- }
554
- }
555
-
556
- // 校验表在库中是否已存在记录
557
- async isCollectionExitsRecords(objectApiName: string) {
558
- if(this.driver === SteedosDatabaseDriverType.Mongo){
559
- const adapter = this.adapter;
560
- await adapter.connect();
561
- const collection = (adapter as any).collection(objectApiName);
562
- let count = await collection.count({});
563
- return !!count;
564
- }
565
- }
566
- }
567
-
568
- export function getDataSource(datasourceName: string, schema?: SteedosSchema) {
569
- return (schema ? schema : getSteedosSchema()).getDataSource(datasourceName);
570
- }