@things-factory/dataset 5.0.0-alpha.35 → 5.0.0-alpha.38

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.
@@ -1,9 +1,9 @@
1
1
  import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'
2
- import { Equal, getRepository } from 'typeorm'
2
+ import { getRepository } from 'typeorm'
3
3
 
4
4
  import { Role, User } from '@things-factory/auth-base'
5
5
  import { Board } from '@things-factory/board-service'
6
- import { convertListParams, Domain, ListParam } from '@things-factory/shell'
6
+ import { Domain, getQueryBuilderFromListParams, ListParam } from '@things-factory/shell'
7
7
 
8
8
  import { DataItem } from '../data-item/data-item'
9
9
  import { DataSample } from '../data-sample/data-sample'
@@ -29,47 +29,67 @@ export class DataSetQuery {
29
29
  async dataSets(@Args() params: ListParam, @Ctx() context: any): Promise<DataSetList> {
30
30
  const { domain } = context.state
31
31
 
32
- const convertedParams = convertListParams(params, domain.id)
33
- const [items, total] = await getRepository(DataSet).findAndCount(convertedParams)
32
+ const queryBuilder = getQueryBuilderFromListParams({
33
+ repository: getRepository(DataSet),
34
+ params,
35
+ domain,
36
+ alias: 'dataset'
37
+ })
38
+
39
+ const [items, total] = await queryBuilder.getManyAndCount()
34
40
 
35
41
  return { items, total }
36
42
  }
37
43
 
38
44
  @Query(returns => DataSetList, { description: 'To fetch multiple DataSets for data entry manually' })
39
45
  async dataSetsForEntry(@Args() params: ListParam, @Ctx() context: any): Promise<DataSetList> {
40
- const { domain } = context.state
46
+ var { domain, user } = context.state
41
47
 
42
- /* TODO. 조회한 사용자가 entry-role을 가진 data-set 리스트만 반환 */
43
-
44
- const { where = {}, order, skip, take } = convertListParams(params, domain.id)
45
- where.active = Equal(true)
48
+ /* 조회한 사용자가 entry-role을 가진 data-set 리스트만 반환 */
49
+ user = await getRepository(User).findOne({
50
+ where: { id: user.id },
51
+ relations: ['roles']
52
+ })
53
+ const roles = user.roles.filter(role => role.domainId === domain.id).map(role => role.id)
46
54
 
47
- const [items, total] = await getRepository(DataSet).findAndCount({
48
- where,
49
- order,
50
- skip,
51
- take
55
+ const queryBuilder = getQueryBuilderFromListParams({
56
+ repository: getRepository(DataSet),
57
+ params,
58
+ domain,
59
+ alias: 'dataset'
52
60
  })
53
61
 
62
+ queryBuilder.andWhere(`dataset.active = :active`, { active: true })
63
+ queryBuilder.andWhere(`dataset.entry_role_id IN (:...roles)`, { roles })
64
+
65
+ const [items, total] = await queryBuilder.getManyAndCount()
66
+
54
67
  return { items, total }
55
68
  }
56
69
 
57
70
  @Query(returns => DataSetList, { description: 'To fetch multiple DataSets to see data report' })
58
71
  async dataSetsForReport(@Args() params: ListParam, @Ctx() context: any): Promise<DataSetList> {
59
- const { domain } = context.state
60
-
61
- /* TODO. 조회한 사용자가 supervisory 역할을 가진 data-set 리스트만 반환 */
72
+ var { domain, user } = context.state
62
73
 
63
- const { where = {}, order, skip, take } = convertListParams(params, domain.id)
64
- where.active = Equal(true)
74
+ /* 조회한 사용자가 supervisory 역할을 가진 data-set 리스트만 반환 */
75
+ user = await getRepository(User).findOne({
76
+ where: { id: user.id },
77
+ relations: ['roles']
78
+ })
79
+ const roles = user.roles.filter(role => role.domainId === domain.id).map(role => role.id)
65
80
 
66
- const [items, total] = await getRepository(DataSet).findAndCount({
67
- where,
68
- order,
69
- skip,
70
- take
81
+ const queryBuilder = getQueryBuilderFromListParams({
82
+ repository: getRepository(DataSet),
83
+ params,
84
+ domain,
85
+ alias: 'dataset'
71
86
  })
72
87
 
88
+ queryBuilder.andWhere(`dataset.active = :active`, { active: true })
89
+ queryBuilder.andWhere(`dataset.supervisory_role_id IN (:...roles)`, { roles })
90
+
91
+ const [items, total] = await queryBuilder.getManyAndCount()
92
+
73
93
  return { items, total }
74
94
  }
75
95
 
@@ -136,14 +156,14 @@ export class DataSetQuery {
136
156
 
137
157
  @FieldResolver(type => Date, { nullable: true })
138
158
  async nextSchedule(@Root() dataSet: DataSet): Promise<Date> {
139
- const { domain, schedule, timezone } = dataSet
159
+ const { domainId, schedule, timezone } = dataSet
140
160
 
141
161
  if (!schedule) {
142
162
  return
143
163
  }
144
164
 
145
165
  var interval = parser.parseExpression(schedule, {
146
- tz: timezone || domain.timezone || 'UTC'
166
+ tz: timezone || ((await getRepository(Domain).findOne(domainId)) as Domain).timezone || 'UTC'
147
167
  })
148
168
 
149
169
  return interval.next().toDate()
@@ -151,14 +171,14 @@ export class DataSetQuery {
151
171
 
152
172
  @FieldResolver(type => Date, { nullable: true })
153
173
  async prevSchedule(@Root() dataSet: DataSet): Promise<Date> {
154
- const { domain, schedule, timezone } = dataSet
174
+ const { domainId, schedule, timezone } = dataSet
155
175
 
156
176
  if (!schedule) {
157
177
  return
158
178
  }
159
179
 
160
180
  var interval = parser.parseExpression(schedule, {
161
- tz: timezone || domain.timezone || 'UTC'
181
+ tz: timezone || ((await getRepository(Domain).findOne(domainId)) as Domain).timezone || 'UTC'
162
182
  })
163
183
 
164
184
  return interval.prev().toDate()
@@ -75,6 +75,9 @@ export class DataSetPatch {
75
75
  @Field({ nullable: true })
76
76
  active?: boolean
77
77
 
78
+ @Field({ nullable: true })
79
+ type?: 'manual' | 'automatic' | string
80
+
78
81
  @Field({ nullable: true })
79
82
  useCase?: string
80
83