@steedos/service-object-graphql 2.4.12 → 2.4.13

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 (2) hide show
  1. package/package.json +6 -5
  2. package/package.service.js +31 -40
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos/service-object-graphql",
3
- "version": "2.4.12",
3
+ "version": "2.4.13",
4
4
  "main": "package.service.js",
5
5
  "private": false,
6
6
  "publishConfig": {
@@ -15,11 +15,12 @@
15
15
  "description": "steedos package",
16
16
  "repository": {},
17
17
  "license": "MIT",
18
- "gitHead": "9e0c93d90964dc1a7aef679c64f977d2352ef013",
18
+ "gitHead": "2cf850386905bc3d5532d27bda3b128c683c2c6f",
19
19
  "dependencies": {
20
- "@steedos/i18n": "2.4.12",
21
- "@steedos/objectql": "2.4.12",
22
- "@steedos/service-object-mixin": "2.4.12",
20
+ "@steedos/filters": "2.4.13",
21
+ "@steedos/i18n": "2.4.13",
22
+ "@steedos/objectql": "2.4.13",
23
+ "@steedos/service-object-mixin": "2.4.13",
23
24
  "graphql": "^15.8.0",
24
25
  "graphql-parse-resolve-info": "^4.12.3",
25
26
  "moleculer": "^0.14.25",
@@ -2,12 +2,12 @@
2
2
  * @Author: sunhaolin@hotoa.com
3
3
  * @Date: 2023-03-23 15:12:14
4
4
  * @LastEditors: sunhaolin@hotoa.com
5
- * @LastEditTime: 2023-04-11 11:44:41
5
+ * @LastEditTime: 2023-04-13 18:48:20
6
6
  * @Description:
7
7
  */
8
8
 
9
9
  "use strict";
10
- const { SteedosDatabaseDriverType, getObject } = require('@steedos/objectql');
10
+ const { SteedosDatabaseDriverType, getObject, getDataSource } = require('@steedos/objectql');
11
11
  const {
12
12
  generateActionGraphqlProp,
13
13
  generateSettingsGraphql,
@@ -16,6 +16,8 @@ const {
16
16
  } = require('./lib');
17
17
  const open = require('open');
18
18
 
19
+ const { formatFiltersToODataQuery } = require("@steedos/filters");
20
+
19
21
  const serviceObjectMixin = require('@steedos/service-object-mixin');
20
22
 
21
23
  /**
@@ -71,26 +73,8 @@ module.exports = {
71
73
  async handler(ctx) {
72
74
  const resolveInfo = ctx.meta.resolveInfo
73
75
  const objectName = resolveInfo.fieldName
74
- const objectConfig = await getObject(objectName).getConfig()
75
76
  // filters: 如果filters中没有查询 is_deleted 则自动添加is_deleted != true 条件
76
- if (objectConfig.datasource.driver === SteedosDatabaseDriverType.MeteorMongo || objectConfig.datasource.driver === SteedosDatabaseDriverType.Mongo) {
77
- const { filters } = ctx.params;
78
- if (filters) {
79
- if (_.isString(filters)) {
80
- if (filters.indexOf('(is_deleted eq true)') < 0) {
81
- ctx.params.filters = `(${filters}) and (is_deleted ne true)`;
82
- }
83
- }
84
- if (_.isArray(filters)) {
85
- const filtersStr = formatFiltersToODataQuery(filters);
86
- if (filtersStr.indexOf('(is_deleted eq true)') < 0) {
87
- ctx.params.filters = [ctx.params.filters, ['is_deleted', '!=', true]]
88
- }
89
- }
90
- } else {
91
- ctx.params.filters = '(is_deleted ne true)'
92
- }
93
- }
77
+ ctx.params.filters = await this.dealWithFilters(ctx.params.filters, objectName)
94
78
  if (_.isEmpty(ctx.params.fields)) {
95
79
  const { resolveInfo } = ctx.meta;
96
80
 
@@ -115,26 +99,8 @@ module.exports = {
115
99
  async handler(ctx) {
116
100
  const resolveInfo = ctx.meta.resolveInfo
117
101
  const objectName = resolveInfo.fieldName.replace('__count', '')
118
- const objectConfig = await getObject(objectName).getConfig()
119
102
  // filters: 如果filters中没有查询 is_deleted 则自动添加is_deleted != true 条件
120
- if (objectConfig.datasource.driver === SteedosDatabaseDriverType.MeteorMongo || objectConfig.datasource.driver === SteedosDatabaseDriverType.Mongo) {
121
- const { filters } = ctx.params;
122
- if (filters) {
123
- if (_.isString(filters)) {
124
- if (filters.indexOf('(is_deleted eq true)') < 0) {
125
- ctx.params.filters = `(${filters}) and (is_deleted ne true)`;
126
- }
127
- }
128
- if (_.isArray(filters)) {
129
- const filtersStr = formatFiltersToODataQuery(filters);
130
- if (filtersStr.indexOf('(is_deleted eq true)') < 0) {
131
- ctx.params.filters = [ctx.params.filters, ['is_deleted', '!=', true]]
132
- }
133
- }
134
- } else {
135
- ctx.params.filters = '(is_deleted ne true)'
136
- }
137
- }
103
+ ctx.params.filters = await this.dealWithFilters(ctx.params.filters, objectName)
138
104
 
139
105
  const userSession = ctx.meta.user;
140
106
  return this.count(objectName, ctx.params, userSession)
@@ -447,6 +413,31 @@ module.exports = {
447
413
  };
448
414
 
449
415
  return objGraphqlMap
416
+ },
417
+
418
+ // filters: 如果filters中没有查询 is_deleted 则自动添加is_deleted != true 条件
419
+ async dealWithFilters(filters, objectName) {
420
+ let newFilters = filters
421
+ const objectConfig = await getObject(objectName).getConfig()
422
+ const datasource = getDataSource(objectConfig.datasource)
423
+ if (datasource.driver === SteedosDatabaseDriverType.MeteorMongo || datasource.driver === SteedosDatabaseDriverType.Mongo) {
424
+ if (filters) {
425
+ if (_.isString(filters)) {
426
+ if (filters.indexOf('(is_deleted eq true)') < 0) {
427
+ newFilters = `(${filters}) and (is_deleted ne true)`;
428
+ }
429
+ }
430
+ if (_.isArray(filters)) {
431
+ const filtersStr = formatFiltersToODataQuery(filters);
432
+ if (filtersStr.indexOf('(is_deleted eq true)') < 0) {
433
+ newFilters = [filters, ['is_deleted', '!=', true]]
434
+ }
435
+ }
436
+ } else {
437
+ newFilters = '(is_deleted ne true)'
438
+ }
439
+ }
440
+ return newFilters
450
441
  }
451
442
  },
452
443