@things-factory/kpi 1.0.0-alpha.5

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 (259) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/assets/images/hatiolab-logo.png +0 -0
  3. package/client/index.ts +0 -0
  4. package/client/pages/kpe-metric/kpe-metric-importer.ts +90 -0
  5. package/client/pages/kpe-metric/kpe-metric-list-page.ts +398 -0
  6. package/client/pages/kpi/kpi-importer.ts +90 -0
  7. package/client/pages/kpi/kpi-list-page.ts +398 -0
  8. package/client/pages/kpi-category/kpi-category-importer.ts +90 -0
  9. package/client/pages/kpi-category/kpi-category-list-page.ts +398 -0
  10. package/client/pages/kpi-formula/kpi-formula-importer.ts +90 -0
  11. package/client/pages/kpi-formula/kpi-formula-list-page.ts +398 -0
  12. package/client/pages/kpi-grade/kpi-grade-importer.ts +90 -0
  13. package/client/pages/kpi-grade/kpi-grade-list-page.ts +398 -0
  14. package/client/pages/kpi-metric/kpi-metric-importer.ts +90 -0
  15. package/client/pages/kpi-metric/kpi-metric-list-page.ts +398 -0
  16. package/client/pages/kpi-value/kpi-value-importer.ts +90 -0
  17. package/client/pages/kpi-value/kpi-value-list-page.ts +398 -0
  18. package/client/pages/metric/metric-importer.ts +90 -0
  19. package/client/pages/metric/metric-list-page.ts +398 -0
  20. package/client/route.ts +4 -0
  21. package/client/tsconfig.json +11 -0
  22. package/design-entities.md +97 -0
  23. package/dist-client/index.d.ts +0 -0
  24. package/dist-client/index.js +2 -0
  25. package/dist-client/index.js.map +1 -0
  26. package/dist-client/pages/kpe-metric/kpe-metric-importer.d.ts +23 -0
  27. package/dist-client/pages/kpe-metric/kpe-metric-importer.js +93 -0
  28. package/dist-client/pages/kpe-metric/kpe-metric-importer.js.map +1 -0
  29. package/dist-client/pages/kpe-metric/kpe-metric-list-page.d.ts +66 -0
  30. package/dist-client/pages/kpe-metric/kpe-metric-list-page.js +370 -0
  31. package/dist-client/pages/kpe-metric/kpe-metric-list-page.js.map +1 -0
  32. package/dist-client/pages/kpi/kpi-importer.d.ts +23 -0
  33. package/dist-client/pages/kpi/kpi-importer.js +93 -0
  34. package/dist-client/pages/kpi/kpi-importer.js.map +1 -0
  35. package/dist-client/pages/kpi/kpi-list-page.d.ts +66 -0
  36. package/dist-client/pages/kpi/kpi-list-page.js +370 -0
  37. package/dist-client/pages/kpi/kpi-list-page.js.map +1 -0
  38. package/dist-client/pages/kpi-category/kpi-category-importer.d.ts +23 -0
  39. package/dist-client/pages/kpi-category/kpi-category-importer.js +93 -0
  40. package/dist-client/pages/kpi-category/kpi-category-importer.js.map +1 -0
  41. package/dist-client/pages/kpi-category/kpi-category-list-page.d.ts +66 -0
  42. package/dist-client/pages/kpi-category/kpi-category-list-page.js +370 -0
  43. package/dist-client/pages/kpi-category/kpi-category-list-page.js.map +1 -0
  44. package/dist-client/pages/kpi-formula/kpi-formula-importer.d.ts +23 -0
  45. package/dist-client/pages/kpi-formula/kpi-formula-importer.js +93 -0
  46. package/dist-client/pages/kpi-formula/kpi-formula-importer.js.map +1 -0
  47. package/dist-client/pages/kpi-formula/kpi-formula-list-page.d.ts +66 -0
  48. package/dist-client/pages/kpi-formula/kpi-formula-list-page.js +370 -0
  49. package/dist-client/pages/kpi-formula/kpi-formula-list-page.js.map +1 -0
  50. package/dist-client/pages/kpi-grade/kpi-grade-importer.d.ts +23 -0
  51. package/dist-client/pages/kpi-grade/kpi-grade-importer.js +93 -0
  52. package/dist-client/pages/kpi-grade/kpi-grade-importer.js.map +1 -0
  53. package/dist-client/pages/kpi-grade/kpi-grade-list-page.d.ts +66 -0
  54. package/dist-client/pages/kpi-grade/kpi-grade-list-page.js +370 -0
  55. package/dist-client/pages/kpi-grade/kpi-grade-list-page.js.map +1 -0
  56. package/dist-client/pages/kpi-metric/kpi-metric-importer.d.ts +23 -0
  57. package/dist-client/pages/kpi-metric/kpi-metric-importer.js +93 -0
  58. package/dist-client/pages/kpi-metric/kpi-metric-importer.js.map +1 -0
  59. package/dist-client/pages/kpi-metric/kpi-metric-list-page.d.ts +66 -0
  60. package/dist-client/pages/kpi-metric/kpi-metric-list-page.js +370 -0
  61. package/dist-client/pages/kpi-metric/kpi-metric-list-page.js.map +1 -0
  62. package/dist-client/pages/kpi-value/kpi-value-importer.d.ts +23 -0
  63. package/dist-client/pages/kpi-value/kpi-value-importer.js +93 -0
  64. package/dist-client/pages/kpi-value/kpi-value-importer.js.map +1 -0
  65. package/dist-client/pages/kpi-value/kpi-value-list-page.d.ts +66 -0
  66. package/dist-client/pages/kpi-value/kpi-value-list-page.js +370 -0
  67. package/dist-client/pages/kpi-value/kpi-value-list-page.js.map +1 -0
  68. package/dist-client/pages/metric/metric-importer.d.ts +23 -0
  69. package/dist-client/pages/metric/metric-importer.js +93 -0
  70. package/dist-client/pages/metric/metric-importer.js.map +1 -0
  71. package/dist-client/pages/metric/metric-list-page.d.ts +66 -0
  72. package/dist-client/pages/metric/metric-list-page.js +370 -0
  73. package/dist-client/pages/metric/metric-list-page.js.map +1 -0
  74. package/dist-client/route.d.ts +1 -0
  75. package/dist-client/route.js +5 -0
  76. package/dist-client/route.js.map +1 -0
  77. package/dist-client/tsconfig.tsbuildinfo +1 -0
  78. package/dist-server/index.d.ts +2 -0
  79. package/dist-server/index.js +6 -0
  80. package/dist-server/index.js.map +1 -0
  81. package/dist-server/routes.d.ts +0 -0
  82. package/dist-server/routes.js +24 -0
  83. package/dist-server/routes.js.map +1 -0
  84. package/dist-server/service/index.d.ts +16 -0
  85. package/dist-server/service/index.js +45 -0
  86. package/dist-server/service/index.js.map +1 -0
  87. package/dist-server/service/kpi/event-subscriber.d.ts +7 -0
  88. package/dist-server/service/kpi/event-subscriber.js +21 -0
  89. package/dist-server/service/kpi/event-subscriber.js.map +1 -0
  90. package/dist-server/service/kpi/index.d.ts +7 -0
  91. package/dist-server/service/kpi/index.js +12 -0
  92. package/dist-server/service/kpi/index.js.map +1 -0
  93. package/dist-server/service/kpi/kpi-history.d.ts +25 -0
  94. package/dist-server/service/kpi/kpi-history.js +128 -0
  95. package/dist-server/service/kpi/kpi-history.js.map +1 -0
  96. package/dist-server/service/kpi/kpi-mutation.d.ts +10 -0
  97. package/dist-server/service/kpi/kpi-mutation.js +169 -0
  98. package/dist-server/service/kpi/kpi-mutation.js.map +1 -0
  99. package/dist-server/service/kpi/kpi-query.d.ts +12 -0
  100. package/dist-server/service/kpi/kpi-query.js +97 -0
  101. package/dist-server/service/kpi/kpi-query.js.map +1 -0
  102. package/dist-server/service/kpi/kpi-type.d.ts +23 -0
  103. package/dist-server/service/kpi/kpi-type.js +86 -0
  104. package/dist-server/service/kpi/kpi-type.js.map +1 -0
  105. package/dist-server/service/kpi/kpi.d.ts +25 -0
  106. package/dist-server/service/kpi/kpi.js +113 -0
  107. package/dist-server/service/kpi/kpi.js.map +1 -0
  108. package/dist-server/service/kpi-category/index.d.ts +6 -0
  109. package/dist-server/service/kpi-category/index.js +10 -0
  110. package/dist-server/service/kpi-category/index.js.map +1 -0
  111. package/dist-server/service/kpi-category/kpi-category-mutation.d.ts +10 -0
  112. package/dist-server/service/kpi-category/kpi-category-mutation.js +128 -0
  113. package/dist-server/service/kpi-category/kpi-category-mutation.js.map +1 -0
  114. package/dist-server/service/kpi-category/kpi-category-query.d.ts +11 -0
  115. package/dist-server/service/kpi-category/kpi-category-query.js +79 -0
  116. package/dist-server/service/kpi-category/kpi-category-query.js.map +1 -0
  117. package/dist-server/service/kpi-category/kpi-category-type.d.ts +20 -0
  118. package/dist-server/service/kpi-category/kpi-category-type.js +77 -0
  119. package/dist-server/service/kpi-category/kpi-category-type.js.map +1 -0
  120. package/dist-server/service/kpi-category/kpi-category.d.ts +22 -0
  121. package/dist-server/service/kpi-category/kpi-category.js +95 -0
  122. package/dist-server/service/kpi-category/kpi-category.js.map +1 -0
  123. package/dist-server/service/kpi-formula/event-subscriber.d.ts +7 -0
  124. package/dist-server/service/kpi-formula/event-subscriber.js +21 -0
  125. package/dist-server/service/kpi-formula/event-subscriber.js.map +1 -0
  126. package/dist-server/service/kpi-formula/index.d.ts +7 -0
  127. package/dist-server/service/kpi-formula/index.js +12 -0
  128. package/dist-server/service/kpi-formula/index.js.map +1 -0
  129. package/dist-server/service/kpi-formula/kpi-formula-history.d.ts +25 -0
  130. package/dist-server/service/kpi-formula/kpi-formula-history.js +128 -0
  131. package/dist-server/service/kpi-formula/kpi-formula-history.js.map +1 -0
  132. package/dist-server/service/kpi-formula/kpi-formula-mutation.d.ts +10 -0
  133. package/dist-server/service/kpi-formula/kpi-formula-mutation.js +128 -0
  134. package/dist-server/service/kpi-formula/kpi-formula-mutation.js.map +1 -0
  135. package/dist-server/service/kpi-formula/kpi-formula-query.d.ts +11 -0
  136. package/dist-server/service/kpi-formula/kpi-formula-query.js +79 -0
  137. package/dist-server/service/kpi-formula/kpi-formula-query.js.map +1 -0
  138. package/dist-server/service/kpi-formula/kpi-formula-type.d.ts +20 -0
  139. package/dist-server/service/kpi-formula/kpi-formula-type.js +77 -0
  140. package/dist-server/service/kpi-formula/kpi-formula-type.js.map +1 -0
  141. package/dist-server/service/kpi-formula/kpi-formula.d.ts +24 -0
  142. package/dist-server/service/kpi-formula/kpi-formula.js +109 -0
  143. package/dist-server/service/kpi-formula/kpi-formula.js.map +1 -0
  144. package/dist-server/service/kpi-grade/event-subscriber.d.ts +7 -0
  145. package/dist-server/service/kpi-grade/event-subscriber.js +21 -0
  146. package/dist-server/service/kpi-grade/event-subscriber.js.map +1 -0
  147. package/dist-server/service/kpi-grade/index.d.ts +7 -0
  148. package/dist-server/service/kpi-grade/index.js +12 -0
  149. package/dist-server/service/kpi-grade/index.js.map +1 -0
  150. package/dist-server/service/kpi-grade/kpi-grade-history.d.ts +25 -0
  151. package/dist-server/service/kpi-grade/kpi-grade-history.js +128 -0
  152. package/dist-server/service/kpi-grade/kpi-grade-history.js.map +1 -0
  153. package/dist-server/service/kpi-grade/kpi-grade-mutation.d.ts +10 -0
  154. package/dist-server/service/kpi-grade/kpi-grade-mutation.js +128 -0
  155. package/dist-server/service/kpi-grade/kpi-grade-mutation.js.map +1 -0
  156. package/dist-server/service/kpi-grade/kpi-grade-query.d.ts +11 -0
  157. package/dist-server/service/kpi-grade/kpi-grade-query.js +79 -0
  158. package/dist-server/service/kpi-grade/kpi-grade-query.js.map +1 -0
  159. package/dist-server/service/kpi-grade/kpi-grade-type.d.ts +20 -0
  160. package/dist-server/service/kpi-grade/kpi-grade-type.js +77 -0
  161. package/dist-server/service/kpi-grade/kpi-grade-type.js.map +1 -0
  162. package/dist-server/service/kpi-grade/kpi-grade.d.ts +24 -0
  163. package/dist-server/service/kpi-grade/kpi-grade.js +109 -0
  164. package/dist-server/service/kpi-grade/kpi-grade.js.map +1 -0
  165. package/dist-server/service/kpi-metric/event-subscriber.d.ts +7 -0
  166. package/dist-server/service/kpi-metric/event-subscriber.js +21 -0
  167. package/dist-server/service/kpi-metric/event-subscriber.js.map +1 -0
  168. package/dist-server/service/kpi-metric/index.d.ts +7 -0
  169. package/dist-server/service/kpi-metric/index.js +12 -0
  170. package/dist-server/service/kpi-metric/index.js.map +1 -0
  171. package/dist-server/service/kpi-metric/kpi-metric-history.d.ts +25 -0
  172. package/dist-server/service/kpi-metric/kpi-metric-history.js +128 -0
  173. package/dist-server/service/kpi-metric/kpi-metric-history.js.map +1 -0
  174. package/dist-server/service/kpi-metric/kpi-metric-mutation.d.ts +10 -0
  175. package/dist-server/service/kpi-metric/kpi-metric-mutation.js +169 -0
  176. package/dist-server/service/kpi-metric/kpi-metric-mutation.js.map +1 -0
  177. package/dist-server/service/kpi-metric/kpi-metric-query.d.ts +12 -0
  178. package/dist-server/service/kpi-metric/kpi-metric-query.js +97 -0
  179. package/dist-server/service/kpi-metric/kpi-metric-query.js.map +1 -0
  180. package/dist-server/service/kpi-metric/kpi-metric-type.d.ts +23 -0
  181. package/dist-server/service/kpi-metric/kpi-metric-type.js +86 -0
  182. package/dist-server/service/kpi-metric/kpi-metric-type.js.map +1 -0
  183. package/dist-server/service/kpi-metric/kpi-metric.d.ts +25 -0
  184. package/dist-server/service/kpi-metric/kpi-metric.js +113 -0
  185. package/dist-server/service/kpi-metric/kpi-metric.js.map +1 -0
  186. package/dist-server/service/kpi-value/index.d.ts +6 -0
  187. package/dist-server/service/kpi-value/index.js +10 -0
  188. package/dist-server/service/kpi-value/index.js.map +1 -0
  189. package/dist-server/service/kpi-value/kpi-value-mutation.d.ts +10 -0
  190. package/dist-server/service/kpi-value/kpi-value-mutation.js +128 -0
  191. package/dist-server/service/kpi-value/kpi-value-mutation.js.map +1 -0
  192. package/dist-server/service/kpi-value/kpi-value-query.d.ts +11 -0
  193. package/dist-server/service/kpi-value/kpi-value-query.js +79 -0
  194. package/dist-server/service/kpi-value/kpi-value-query.js.map +1 -0
  195. package/dist-server/service/kpi-value/kpi-value-type.d.ts +20 -0
  196. package/dist-server/service/kpi-value/kpi-value-type.js +77 -0
  197. package/dist-server/service/kpi-value/kpi-value-type.js.map +1 -0
  198. package/dist-server/service/kpi-value/kpi-value.d.ts +22 -0
  199. package/dist-server/service/kpi-value/kpi-value.js +95 -0
  200. package/dist-server/service/kpi-value/kpi-value.js.map +1 -0
  201. package/dist-server/tsconfig.tsbuildinfo +1 -0
  202. package/helps/kpi/kpe-metric.md +160 -0
  203. package/helps/kpi/kpi-category.md +160 -0
  204. package/helps/kpi/kpi-formula.md +160 -0
  205. package/helps/kpi/kpi-grade.md +160 -0
  206. package/helps/kpi/kpi-metric.md +160 -0
  207. package/helps/kpi/kpi-value.md +160 -0
  208. package/helps/kpi/kpi.md +160 -0
  209. package/helps/kpi/metric.md +160 -0
  210. package/kpi-grade.csv +41 -0
  211. package/package.json +36 -0
  212. package/server/index.ts +3 -0
  213. package/server/routes.ts +26 -0
  214. package/server/service/index.ts +43 -0
  215. package/server/service/kpi/event-subscriber.ts +17 -0
  216. package/server/service/kpi/index.ts +9 -0
  217. package/server/service/kpi/kpi-history.ts +116 -0
  218. package/server/service/kpi/kpi-mutation.ts +198 -0
  219. package/server/service/kpi/kpi-query.ts +62 -0
  220. package/server/service/kpi/kpi-type.ts +61 -0
  221. package/server/service/kpi/kpi.ts +98 -0
  222. package/server/service/kpi-category/index.ts +7 -0
  223. package/server/service/kpi-category/kpi-category-mutation.ts +137 -0
  224. package/server/service/kpi-category/kpi-category-query.ts +48 -0
  225. package/server/service/kpi-category/kpi-category-type.ts +55 -0
  226. package/server/service/kpi-category/kpi-category.ts +84 -0
  227. package/server/service/kpi-formula/event-subscriber.ts +17 -0
  228. package/server/service/kpi-formula/index.ts +9 -0
  229. package/server/service/kpi-formula/kpi-formula-history.ts +116 -0
  230. package/server/service/kpi-formula/kpi-formula-mutation.ts +137 -0
  231. package/server/service/kpi-formula/kpi-formula-query.ts +48 -0
  232. package/server/service/kpi-formula/kpi-formula-type.ts +55 -0
  233. package/server/service/kpi-formula/kpi-formula.ts +95 -0
  234. package/server/service/kpi-grade/event-subscriber.ts +17 -0
  235. package/server/service/kpi-grade/index.ts +9 -0
  236. package/server/service/kpi-grade/kpi-grade-history.ts +116 -0
  237. package/server/service/kpi-grade/kpi-grade-mutation.ts +137 -0
  238. package/server/service/kpi-grade/kpi-grade-query.ts +48 -0
  239. package/server/service/kpi-grade/kpi-grade-type.ts +55 -0
  240. package/server/service/kpi-grade/kpi-grade.ts +95 -0
  241. package/server/service/kpi-metric/event-subscriber.ts +17 -0
  242. package/server/service/kpi-metric/index.ts +9 -0
  243. package/server/service/kpi-metric/kpi-metric-history.ts +116 -0
  244. package/server/service/kpi-metric/kpi-metric-mutation.ts +198 -0
  245. package/server/service/kpi-metric/kpi-metric-query.ts +62 -0
  246. package/server/service/kpi-metric/kpi-metric-type.ts +61 -0
  247. package/server/service/kpi-metric/kpi-metric.ts +98 -0
  248. package/server/service/kpi-value/index.ts +7 -0
  249. package/server/service/kpi-value/kpi-value-mutation.ts +137 -0
  250. package/server/service/kpi-value/kpi-value-query.ts +48 -0
  251. package/server/service/kpi-value/kpi-value-type.ts +55 -0
  252. package/server/service/kpi-value/kpi-value.ts +84 -0
  253. package/server/tsconfig.json +10 -0
  254. package/things-factory.config.js +10 -0
  255. package/translations/en.json +1 -0
  256. package/translations/ja.json +1 -0
  257. package/translations/ko.json +1 -0
  258. package/translations/ms.json +1 -0
  259. package/translations/zh.json +1 -0
@@ -0,0 +1,55 @@
1
+ import type { FileUpload } from 'graphql-upload/GraphQLUpload.js'
2
+ import GraphQLUpload from 'graphql-upload/GraphQLUpload.js'
3
+ import { ObjectType, Field, InputType, Int, ID, registerEnumType } from 'type-graphql'
4
+
5
+ import { ObjectRef, ScalarObject } from '@things-factory/shell'
6
+
7
+ import { KpiFormula, KpiFormulaStatus } from './kpi-formula'
8
+
9
+ @InputType()
10
+ export class NewKpiFormula {
11
+ @Field()
12
+ name: string
13
+
14
+ @Field({ nullable: true })
15
+ description?: string
16
+
17
+ @Field(type => KpiFormulaStatus, { nullable: true })
18
+ state?: KpiFormulaStatus
19
+
20
+ @Field({ nullable: true })
21
+ active?: boolean
22
+
23
+ @Field({ nullable: true })
24
+ params?: string
25
+ }
26
+
27
+ @InputType()
28
+ export class KpiFormulaPatch {
29
+ @Field(type => ID, { nullable: true })
30
+ id?: string
31
+
32
+ @Field({ nullable: true })
33
+ name?: string
34
+
35
+ @Field({ nullable: true })
36
+ description?: string
37
+
38
+ @Field(type => KpiFormulaStatus, { nullable: true })
39
+ state?: KpiFormulaStatus
40
+
41
+ @Field({ nullable: true })
42
+ active?: boolean
43
+
44
+ @Field({ nullable: true })
45
+ cuFlag?: string
46
+ }
47
+
48
+ @ObjectType()
49
+ export class KpiFormulaList {
50
+ @Field(type => [KpiFormula])
51
+ items: KpiFormula[]
52
+
53
+ @Field(type => Int)
54
+ total: number
55
+ }
@@ -0,0 +1,95 @@
1
+ import {
2
+ CreateDateColumn,
3
+ UpdateDateColumn,
4
+ DeleteDateColumn,
5
+ Entity,
6
+ Index,
7
+ Column,
8
+ RelationId,
9
+ ManyToOne,
10
+ VersionColumn,
11
+ PrimaryGeneratedColumn
12
+ } from 'typeorm'
13
+ import { ObjectType, Field, Int, ID, registerEnumType } from 'type-graphql'
14
+
15
+ import { Domain } from '@things-factory/shell'
16
+ import { User } from '@things-factory/auth-base'
17
+
18
+ export enum KpiFormulaStatus {
19
+ STATUS_A = 'STATUS_A',
20
+ STATUS_B = 'STATUS_B'
21
+ }
22
+
23
+ registerEnumType(KpiFormulaStatus, {
24
+ name: 'KpiFormulaStatus',
25
+ description: 'state enumeration of a kpiFormula'
26
+ })
27
+
28
+ @Entity()
29
+ @Index('ix_kpi_formula_0', (kpiFormula: KpiFormula) => [kpiFormula.domain, kpiFormula.name], {
30
+ where: '"deleted_at" IS NULL',
31
+ unique: true
32
+ })
33
+ @ObjectType({ description: 'Entity for KpiFormula' })
34
+ export class KpiFormula {
35
+ @PrimaryGeneratedColumn('uuid')
36
+ @Field(type => ID)
37
+ readonly id: string
38
+
39
+ @VersionColumn()
40
+ @Field({ nullable: true })
41
+ version?: number = 1
42
+
43
+ @ManyToOne(type => Domain)
44
+ @Field({ nullable: true })
45
+ domain?: Domain
46
+
47
+ @RelationId((kpiFormula: KpiFormula) => kpiFormula.domain)
48
+ domainId?: string
49
+
50
+ @Column()
51
+ @Field({ nullable: true })
52
+ name?: string
53
+
54
+ @Column({ nullable: true })
55
+ @Field({ nullable: true })
56
+ description?: string
57
+
58
+ @Column({ nullable: false, default: false })
59
+ @Field({ nullable: true })
60
+ active?: boolean
61
+
62
+ @Column({ nullable: true })
63
+ @Field({ nullable: true })
64
+ state?: KpiFormulaStatus
65
+
66
+ @Column({ nullable: true })
67
+ @Field({ nullable: true })
68
+ params?: string
69
+
70
+ @CreateDateColumn()
71
+ @Field({ nullable: true })
72
+ createdAt?: Date
73
+
74
+ @UpdateDateColumn()
75
+ @Field({ nullable: true })
76
+ updatedAt?: Date
77
+
78
+ @DeleteDateColumn()
79
+ @Field({ nullable: true })
80
+ deletedAt?: Date
81
+
82
+ @ManyToOne(type => User, { nullable: true })
83
+ @Field(type => User, { nullable: true })
84
+ creator?: User
85
+
86
+ @RelationId((kpiFormula: KpiFormula) => kpiFormula.creator)
87
+ creatorId?: string
88
+
89
+ @ManyToOne(type => User, { nullable: true })
90
+ @Field(type => User, { nullable: true })
91
+ updater?: User
92
+
93
+ @RelationId((kpiFormula: KpiFormula) => kpiFormula.updater)
94
+ updaterId?: string
95
+ }
@@ -0,0 +1,17 @@
1
+ import { EventSubscriber } from 'typeorm'
2
+
3
+ import { HistoryEntitySubscriber } from '@operato/typeorm-history'
4
+
5
+ import { KpiGrade } from './kpi-grade'
6
+ import { KpiGradeHistory } from './kpi-grade-history'
7
+
8
+ @EventSubscriber()
9
+ export class KpiGradeHistoryEntitySubscriber extends HistoryEntitySubscriber<KpiGrade, KpiGradeHistory> {
10
+ public get entity() {
11
+ return KpiGrade
12
+ }
13
+
14
+ public get historyEntity() {
15
+ return KpiGradeHistory
16
+ }
17
+ }
@@ -0,0 +1,9 @@
1
+ import { KpiGrade } from './kpi-grade'
2
+ import { KpiGradeHistory } from './kpi-grade-history'
3
+ import { KpiGradeHistoryEntitySubscriber } from './event-subscriber'
4
+ import { KpiGradeQuery } from './kpi-grade-query'
5
+ import { KpiGradeMutation } from './kpi-grade-mutation'
6
+
7
+ export const entities = [KpiGrade, KpiGradeHistory]
8
+ export const resolvers = [KpiGradeQuery, KpiGradeMutation]
9
+ export const subscribers = [KpiGradeHistoryEntitySubscriber]
@@ -0,0 +1,116 @@
1
+ import { Field, ID, ObjectType } from 'type-graphql'
2
+ import { Column, Entity, Index, ManyToOne, PrimaryGeneratedColumn, RelationId } from 'typeorm'
3
+
4
+ import {
5
+ HistoryActionColumn,
6
+ HistoryActionType,
7
+ HistoryEntityInterface,
8
+ HistoryOriginalIdColumn
9
+ } from '@operato/typeorm-history'
10
+ import { Role, User } from '@things-factory/auth-base'
11
+ import { config } from '@things-factory/env'
12
+ import { Domain } from '@things-factory/shell'
13
+
14
+ import { KpiGrade, KpiGradeStatus } from './kpi-grade'
15
+
16
+ const ORMCONFIG = config.get('ormconfig', {})
17
+ const DATABASE_TYPE = ORMCONFIG.type
18
+
19
+ @Entity()
20
+ @Index(
21
+ 'ix_kpi-grade_history_0',
22
+ (kpiGradeHistory: KpiGradeHistory) => [kpiGradeHistory.originalId, kpiGradeHistory.version],
23
+ { unique: true }
24
+ )
25
+ @Index(
26
+ 'ix_kpi-grade_history_1',
27
+ (kpiGradeHistory: KpiGradeHistory) => [kpiGradeHistory.domain, kpiGradeHistory.originalId, kpiGradeHistory.version],
28
+ { unique: true }
29
+ )
30
+ @ObjectType({ description: 'History Entity of KpiGrade' })
31
+ export class KpiGradeHistory implements HistoryEntityInterface<KpiGrade> {
32
+ @PrimaryGeneratedColumn('uuid')
33
+ @Field(type => ID)
34
+ readonly id: string
35
+
36
+ @Column({ nullable: true, default: 1 })
37
+ @Field({ nullable: true })
38
+ version?: number = 1
39
+
40
+ @ManyToOne(type => Domain)
41
+ @Field({ nullable: true })
42
+ domain?: Domain
43
+
44
+ @RelationId((kpiGrade: KpiGrade) => kpiGrade.domain)
45
+ domainId?: string
46
+
47
+ @Column()
48
+ @Field()
49
+ name: string
50
+
51
+ @Column({ nullable: true })
52
+ @Field({ nullable: true })
53
+ description?: string
54
+
55
+ @Column({ nullable: true })
56
+ @Field({ nullable: true })
57
+ active?: boolean
58
+
59
+ @Column({ nullable: true })
60
+ @Field({ nullable: true })
61
+ state?: KpiGradeStatus
62
+
63
+ @Column({ nullable: true })
64
+ @Field({ nullable: true })
65
+ params?: string
66
+
67
+ @Column({ nullable: true })
68
+ @Field({ nullable: true })
69
+ createdAt?: Date
70
+
71
+ @Column({ nullable: true })
72
+ @Field({ nullable: true })
73
+ updatedAt?: Date
74
+
75
+ @Column({ nullable: true })
76
+ @Field({ nullable: true })
77
+ deletedAt?: Date
78
+
79
+ @ManyToOne(type => User, { nullable: true })
80
+ @Field(type => User, { nullable: true })
81
+ creator?: User
82
+
83
+ @RelationId((kpiGrade: KpiGrade) => kpiGrade.creator)
84
+ creatorId?: string
85
+
86
+ @ManyToOne(type => User, { nullable: true })
87
+ @Field(type => User, { nullable: true })
88
+ updater?: User
89
+
90
+ @RelationId((kpiGrade: KpiGrade) => kpiGrade.updater)
91
+ updaterId?: string
92
+
93
+ @Field(type => String, { nullable: true })
94
+ thumbnail?: string
95
+
96
+ @HistoryOriginalIdColumn()
97
+ public originalId!: string
98
+
99
+ @HistoryActionColumn({
100
+ nullable: false,
101
+ type:
102
+ DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
103
+ ? 'enum'
104
+ : DATABASE_TYPE == 'oracle'
105
+ ? 'varchar2'
106
+ : DATABASE_TYPE == 'mssql'
107
+ ? 'nvarchar'
108
+ : 'varchar',
109
+ enum:
110
+ DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
111
+ ? HistoryActionType
112
+ : undefined,
113
+ length: DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb' ? undefined: 32
114
+ })
115
+ public action!: HistoryActionType
116
+ }
@@ -0,0 +1,137 @@
1
+ import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'
2
+ import { In } from 'typeorm'
3
+ import { getRepository } from '@things-factory/shell'
4
+
5
+ import { KpiGrade } from './kpi-grade'
6
+ import { NewKpiGrade, KpiGradePatch } from './kpi-grade-type'
7
+
8
+ @Resolver(KpiGrade)
9
+ export class KpiGradeMutation {
10
+ @Directive('@transaction')
11
+ @Mutation(returns => KpiGrade, { description: 'To create new KpiGrade' })
12
+ async createKpiGrade(@Arg('kpiGrade') kpiGrade: NewKpiGrade, @Ctx() context: ResolverContext): Promise<KpiGrade> {
13
+ const { domain, user, tx } = context.state
14
+
15
+ const result = await getRepository(KpiGrade, tx).save({
16
+ ...kpiGrade,
17
+ domain,
18
+ creator: user,
19
+ updater: user
20
+ })
21
+
22
+ return result
23
+ }
24
+
25
+ @Directive('@transaction')
26
+ @Mutation(returns => KpiGrade, { description: 'To modify KpiGrade information' })
27
+ async updateKpiGrade(
28
+ @Arg('id') id: string,
29
+ @Arg('patch') patch: KpiGradePatch,
30
+ @Ctx() context: ResolverContext
31
+ ): Promise<KpiGrade> {
32
+ const { domain, user, tx } = context.state
33
+
34
+ const repository = getRepository(KpiGrade, tx)
35
+ const kpiGrade = await repository.findOne({
36
+ where: { domain: { id: domain.id }, id }
37
+ })
38
+
39
+ const result = await repository.save({
40
+ ...kpiGrade,
41
+ ...patch,
42
+ updater: user
43
+ })
44
+
45
+ return result
46
+ }
47
+
48
+ @Directive('@transaction')
49
+ @Mutation(returns => [KpiGrade], { description: "To modify multiple KpiGrades' information" })
50
+ async updateMultipleKpiGrade(
51
+ @Arg('patches', type => [KpiGradePatch]) patches: KpiGradePatch[],
52
+ @Ctx() context: ResolverContext
53
+ ): Promise<KpiGrade[]> {
54
+ const { domain, user, tx } = context.state
55
+
56
+ let results = []
57
+ const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')
58
+ const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
59
+ const kpiGradeRepo = getRepository(KpiGrade, tx)
60
+
61
+ if (_createRecords.length > 0) {
62
+ for (let i = 0; i < _createRecords.length; i++) {
63
+ const newRecord = _createRecords[i]
64
+
65
+ const result = await kpiGradeRepo.save({
66
+ ...newRecord,
67
+ domain,
68
+ creator: user,
69
+ updater: user
70
+ })
71
+
72
+ results.push({ ...result, cuFlag: '+' })
73
+ }
74
+ }
75
+
76
+ if (_updateRecords.length > 0) {
77
+ for (let i = 0; i < _updateRecords.length; i++) {
78
+ const updateRecord = _updateRecords[i]
79
+ const kpiGrade = await kpiGradeRepo.findOneBy({ id: updateRecord.id })
80
+
81
+ const result = await kpiGradeRepo.save({
82
+ ...kpiGrade,
83
+ ...updateRecord,
84
+ updater: user
85
+ })
86
+
87
+ results.push({ ...result, cuFlag: 'M' })
88
+ }
89
+ }
90
+
91
+ return results
92
+ }
93
+
94
+ @Directive('@transaction')
95
+ @Mutation(returns => Boolean, { description: 'To delete KpiGrade' })
96
+ async deleteKpiGrade(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {
97
+ const { domain, tx } = context.state
98
+
99
+ await getRepository(KpiGrade, tx).delete({ domain: { id: domain.id }, id })
100
+
101
+ return true
102
+ }
103
+
104
+ @Directive('@transaction')
105
+ @Mutation(returns => Boolean, { description: 'To delete multiple KpiGrades' })
106
+ async deleteKpiGrades(
107
+ @Arg('ids', type => [String]) ids: string[],
108
+ @Ctx() context: ResolverContext
109
+ ): Promise<boolean> {
110
+ const { domain, tx } = context.state
111
+
112
+ await getRepository(KpiGrade, tx).delete({
113
+ domain: { id: domain.id },
114
+ id: In(ids)
115
+ })
116
+
117
+
118
+ return true
119
+ }
120
+
121
+ @Directive('@transaction')
122
+ @Mutation(returns => Boolean, { description: 'To import multiple KpiGrades' })
123
+ async importKpiGrades(
124
+ @Arg('kpiGrades', type => [KpiGradePatch]) kpiGrades: KpiGradePatch[],
125
+ @Ctx() context: ResolverContext
126
+ ): Promise<boolean> {
127
+ const { domain, tx } = context.state
128
+
129
+ await Promise.all(
130
+ kpiGrades.map(async (kpiGrade: KpiGradePatch) => {
131
+ const createdKpiGrade: KpiGrade = await getRepository(KpiGrade, tx).save({ domain, ...kpiGrade })
132
+ })
133
+ )
134
+
135
+ return true
136
+ }
137
+ }
@@ -0,0 +1,48 @@
1
+ import { Resolver, Query, FieldResolver, Root, Args, Arg, Ctx, Directive } from 'type-graphql'
2
+ import { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'
3
+ import { User } from '@things-factory/auth-base'
4
+ import { KpiGrade } from './kpi-grade'
5
+ import { KpiGradeList } from './kpi-grade-type'
6
+
7
+ @Resolver(KpiGrade)
8
+ export class KpiGradeQuery {
9
+ @Query(returns => KpiGrade!, { nullable: true, description: 'To fetch a KpiGrade' })
10
+ async kpiGrade(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<KpiGrade> {
11
+ const { domain } = context.state
12
+
13
+ return await getRepository(KpiGrade).findOne({
14
+ where: { domain: { id: domain.id }, id }
15
+ })
16
+ }
17
+
18
+ @Query(returns => KpiGradeList, { description: 'To fetch multiple KpiGrades' })
19
+ async kpiGrades(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<KpiGradeList> {
20
+ const { domain } = context.state
21
+
22
+ const queryBuilder = getQueryBuilderFromListParams({
23
+ domain,
24
+ params,
25
+ repository: await getRepository(KpiGrade),
26
+ searchables: ['name', 'description']
27
+ })
28
+
29
+ const [items, total] = await queryBuilder.getManyAndCount()
30
+
31
+ return { items, total }
32
+ }
33
+
34
+ @FieldResolver(type => Domain)
35
+ async domain(@Root() kpiGrade: KpiGrade): Promise<Domain> {
36
+ return kpiGrade.domainId && (await getRepository(Domain).findOneBy({ id: kpiGrade.domainId }))
37
+ }
38
+
39
+ @FieldResolver(type => User)
40
+ async updater(@Root() kpiGrade: KpiGrade): Promise<User> {
41
+ return kpiGrade.updaterId && (await getRepository(User).findOneBy({ id: kpiGrade.updaterId }))
42
+ }
43
+
44
+ @FieldResolver(type => User)
45
+ async creator(@Root() kpiGrade: KpiGrade): Promise<User> {
46
+ return kpiGrade.creatorId && (await getRepository(User).findOneBy({ id: kpiGrade.creatorId }))
47
+ }
48
+ }
@@ -0,0 +1,55 @@
1
+ import type { FileUpload } from 'graphql-upload/GraphQLUpload.js'
2
+ import GraphQLUpload from 'graphql-upload/GraphQLUpload.js'
3
+ import { ObjectType, Field, InputType, Int, ID, registerEnumType } from 'type-graphql'
4
+
5
+ import { ObjectRef, ScalarObject } from '@things-factory/shell'
6
+
7
+ import { KpiGrade, KpiGradeStatus } from './kpi-grade'
8
+
9
+ @InputType()
10
+ export class NewKpiGrade {
11
+ @Field()
12
+ name: string
13
+
14
+ @Field({ nullable: true })
15
+ description?: string
16
+
17
+ @Field(type => KpiGradeStatus, { nullable: true })
18
+ state?: KpiGradeStatus
19
+
20
+ @Field({ nullable: true })
21
+ active?: boolean
22
+
23
+ @Field({ nullable: true })
24
+ params?: string
25
+ }
26
+
27
+ @InputType()
28
+ export class KpiGradePatch {
29
+ @Field(type => ID, { nullable: true })
30
+ id?: string
31
+
32
+ @Field({ nullable: true })
33
+ name?: string
34
+
35
+ @Field({ nullable: true })
36
+ description?: string
37
+
38
+ @Field(type => KpiGradeStatus, { nullable: true })
39
+ state?: KpiGradeStatus
40
+
41
+ @Field({ nullable: true })
42
+ active?: boolean
43
+
44
+ @Field({ nullable: true })
45
+ cuFlag?: string
46
+ }
47
+
48
+ @ObjectType()
49
+ export class KpiGradeList {
50
+ @Field(type => [KpiGrade])
51
+ items: KpiGrade[]
52
+
53
+ @Field(type => Int)
54
+ total: number
55
+ }
@@ -0,0 +1,95 @@
1
+ import {
2
+ CreateDateColumn,
3
+ UpdateDateColumn,
4
+ DeleteDateColumn,
5
+ Entity,
6
+ Index,
7
+ Column,
8
+ RelationId,
9
+ ManyToOne,
10
+ VersionColumn,
11
+ PrimaryGeneratedColumn
12
+ } from 'typeorm'
13
+ import { ObjectType, Field, Int, ID, registerEnumType } from 'type-graphql'
14
+
15
+ import { Domain } from '@things-factory/shell'
16
+ import { User } from '@things-factory/auth-base'
17
+
18
+ export enum KpiGradeStatus {
19
+ STATUS_A = 'STATUS_A',
20
+ STATUS_B = 'STATUS_B'
21
+ }
22
+
23
+ registerEnumType(KpiGradeStatus, {
24
+ name: 'KpiGradeStatus',
25
+ description: 'state enumeration of a kpiGrade'
26
+ })
27
+
28
+ @Entity()
29
+ @Index('ix_kpi_grade_0', (kpiGrade: KpiGrade) => [kpiGrade.domain, kpiGrade.name], {
30
+ where: '"deleted_at" IS NULL',
31
+ unique: true
32
+ })
33
+ @ObjectType({ description: 'Entity for KpiGrade' })
34
+ export class KpiGrade {
35
+ @PrimaryGeneratedColumn('uuid')
36
+ @Field(type => ID)
37
+ readonly id: string
38
+
39
+ @VersionColumn()
40
+ @Field({ nullable: true })
41
+ version?: number = 1
42
+
43
+ @ManyToOne(type => Domain)
44
+ @Field({ nullable: true })
45
+ domain?: Domain
46
+
47
+ @RelationId((kpiGrade: KpiGrade) => kpiGrade.domain)
48
+ domainId?: string
49
+
50
+ @Column()
51
+ @Field({ nullable: true })
52
+ name?: string
53
+
54
+ @Column({ nullable: true })
55
+ @Field({ nullable: true })
56
+ description?: string
57
+
58
+ @Column({ nullable: false, default: false })
59
+ @Field({ nullable: true })
60
+ active?: boolean
61
+
62
+ @Column({ nullable: true })
63
+ @Field({ nullable: true })
64
+ state?: KpiGradeStatus
65
+
66
+ @Column({ nullable: true })
67
+ @Field({ nullable: true })
68
+ params?: string
69
+
70
+ @CreateDateColumn()
71
+ @Field({ nullable: true })
72
+ createdAt?: Date
73
+
74
+ @UpdateDateColumn()
75
+ @Field({ nullable: true })
76
+ updatedAt?: Date
77
+
78
+ @DeleteDateColumn()
79
+ @Field({ nullable: true })
80
+ deletedAt?: Date
81
+
82
+ @ManyToOne(type => User, { nullable: true })
83
+ @Field(type => User, { nullable: true })
84
+ creator?: User
85
+
86
+ @RelationId((kpiGrade: KpiGrade) => kpiGrade.creator)
87
+ creatorId?: string
88
+
89
+ @ManyToOne(type => User, { nullable: true })
90
+ @Field(type => User, { nullable: true })
91
+ updater?: User
92
+
93
+ @RelationId((kpiGrade: KpiGrade) => kpiGrade.updater)
94
+ updaterId?: string
95
+ }
@@ -0,0 +1,17 @@
1
+ import { EventSubscriber } from 'typeorm'
2
+
3
+ import { HistoryEntitySubscriber } from '@operato/typeorm-history'
4
+
5
+ import { KpiMetric } from './kpi-metric'
6
+ import { KpiMetricHistory } from './kpi-metric-history'
7
+
8
+ @EventSubscriber()
9
+ export class KpiMetricHistoryEntitySubscriber extends HistoryEntitySubscriber<KpiMetric, KpiMetricHistory> {
10
+ public get entity() {
11
+ return KpiMetric
12
+ }
13
+
14
+ public get historyEntity() {
15
+ return KpiMetricHistory
16
+ }
17
+ }
@@ -0,0 +1,9 @@
1
+ import { KpiMetric } from './kpi-metric'
2
+ import { KpiMetricHistory } from './kpi-metric-history'
3
+ import { KpiMetricHistoryEntitySubscriber } from './event-subscriber'
4
+ import { KpiMetricQuery } from './kpi-metric-query'
5
+ import { KpiMetricMutation } from './kpi-metric-mutation'
6
+
7
+ export const entities = [KpiMetric, KpiMetricHistory]
8
+ export const resolvers = [KpiMetricQuery, KpiMetricMutation]
9
+ export const subscribers = [KpiMetricHistoryEntitySubscriber]