@things-factory/dataset 6.0.91 → 6.0.93

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/dataset",
3
- "version": "6.0.91",
3
+ "version": "6.0.93",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "dist-client/index.js",
6
6
  "things-factory": true,
@@ -50,5 +50,5 @@
50
50
  "simple-statistics": "^7.8.3",
51
51
  "statistics": "^3.3.0"
52
52
  },
53
- "gitHead": "26a056b2169e65b870a179a615fefb444063eef9"
53
+ "gitHead": "7a17b2f5659c3e162d7f73b47a04f5caafb566e2"
54
54
  }
@@ -5,7 +5,6 @@ import { getQueryBuilderFromListParams, getRepository, ListParam } from '@things
5
5
  import { DataSet, DataSetSummaryPeriodType } from '../service/data-set/data-set'
6
6
 
7
7
  import { DataSummary } from '../service/data-summary/data-summary'
8
- import { DataSummaryList } from '../service/data-summary/data-summary-type'
9
8
 
10
9
  const STAT_FUNCTION_MAP = {
11
10
  sum: 'sum',
@@ -57,6 +56,7 @@ async function getTimesForPeriod(
57
56
  export async function queryDataSummaryByPeriod(
58
57
  period: 'today' | 'this month' | '30 days' | 'this year' | '12 months',
59
58
  dataSetName: string,
59
+ dataKeys: string[] | null,
60
60
  params: ListParam,
61
61
  context: ResolverContext
62
62
  ): Promise<DataSummary[]> {
@@ -80,7 +80,19 @@ export async function queryDataSummaryByPeriod(
80
80
  throw new Error(`given dataSet(${dataSetName}) is not allowed for getting summary for ${period}`)
81
81
  }
82
82
 
83
- const dataKeyItems = dataSet.dataKeySet?.dataKeyItems || []
83
+ // dataKeys 설정되지 않았다면, dataSetdataKeySet 그대로 적용한다는 의미임.
84
+ // dataKeys == [] 라면, dataKeySet을 적용하지 않는다는 의미임.
85
+ // dataKeys에는 dataKeySet의 dataKey 값을 따라야 한다.
86
+ const dataKeyItems = !dataSet.dataKeySet?.dataKeyItems
87
+ ? []
88
+ : dataKeys
89
+ ? dataKeys
90
+ .map(dataKey => {
91
+ return dataSet.dataKeySet.dataKeyItems.find(item => item.dataKey == dataKey)
92
+ })
93
+ .filter(Boolean)
94
+ : dataSet.dataKeySet.dataKeyItems
95
+
84
96
  const searchables = dataKeyItems.map((item, index) => `key0${index + 1}`)
85
97
  const dataItems = dataSet.dataItems.filter(item => item.stat)
86
98
 
@@ -138,7 +150,7 @@ export async function queryDataSummaryByPeriod(
138
150
  period == 'today'
139
151
  ? 'summary.date, summary.period'
140
152
  : ['this year', '12 months'].includes(period)
141
- ? 'month, summary.date'
153
+ ? 'SUBSTRING(summary.date, 1, 7)'
142
154
  : 'summary.date'
143
155
  const groupByKeys = dataKeyItems
144
156
  .map((item, index) => {
@@ -162,23 +174,20 @@ export async function queryDataSummaryByPeriod(
162
174
  ? [{ sort: 'month', order: 'DESC' }]
163
175
  : [{ sort: 'summary.date', order: 'DESC' }]
164
176
 
165
- const queryBuilder = getQueryBuilderFromListParams({
177
+ var queryBuilder = getQueryBuilderFromListParams({
166
178
  repository: getRepository(DataSummary),
167
179
  params,
168
180
  domain,
169
181
  alias: 'summary',
170
- searchables: ['name', 'description'].concat(searchables)
182
+ searchables: searchables
171
183
  })
172
184
  .select('summary.dataSet')
173
- .addSelect('ds.name', 'name')
174
- .addSelect('ds.description', 'description')
175
- .addSelect(selectKeys)
176
185
  .addSelect(selectData)
177
186
  .addSelect('SUM(summary.count)', 'count')
178
187
  .addSelect('SUM(summary.countOoc)', 'countOoc')
179
188
  .addSelect('SUM(summary.countOos)', 'countOos')
180
189
 
181
- selectPeriod(queryBuilder)
190
+ queryBuilder = selectPeriod(queryBuilder)
182
191
  .innerJoin('summary.dataSet', 'ds', 'ds.id = :dataSetName', {
183
192
  dataSetName: dataSet.id
184
193
  })
@@ -186,14 +195,15 @@ export async function queryDataSummaryByPeriod(
186
195
  .andWhere('summary.date >= :from', { from })
187
196
  .andWhere('summary.date < :to', { to })
188
197
  .addGroupBy('summary.dataSet')
189
- .addGroupBy('ds.name')
190
- .addGroupBy('ds.description')
191
198
  .addGroupBy(groupByPeriod)
192
- .addGroupBy(groupByKeys)
199
+
200
+ if (dataKeyItems.length > 0) {
201
+ queryBuilder.addSelect(selectKeys).addGroupBy(groupByKeys)
202
+ }
193
203
 
194
204
  orderByPeriod.map(orderBy => {
195
205
  const { sort, order } = orderBy
196
- queryBuilder.addOrderBy(sort, order)
206
+ queryBuilder.orderBy(sort, order)
197
207
  })
198
208
 
199
209
  const items = await queryBuilder.getRawMany()
@@ -39,10 +39,11 @@ export class DataSummaryQuery {
39
39
  async dataSummaryByPeriod(
40
40
  @Arg('period') period: 'today' | 'this month' | '30 days' | 'this year' | '12 months',
41
41
  @Arg('dataSetName') dataSetName: string,
42
+ @Arg('dataKeys', type => [String], { nullable: true }) dataKeys: string[] | null,
42
43
  @Args() params: ListParam,
43
44
  @Ctx() context: ResolverContext
44
45
  ): Promise<DynamicDataSummary[]> {
45
- return await queryDataSummaryByPeriod(period, dataSetName, params, context)
46
+ return await queryDataSummaryByPeriod(period, dataSetName, dataKeys, params, context)
46
47
  }
47
48
 
48
49
  @Directive('@privilege(category: "data-summary", privilege: "query", domainOwnerGranted: true)')