@things-factory/rack-base 5.0.8 → 6.0.0-alpha.0

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 (168) hide show
  1. package/client/bootstrap.ts +1 -0
  2. package/{server/controllers → client}/index.ts +0 -0
  3. package/client/pages/cell/cell-importer.ts +97 -0
  4. package/client/pages/cell/cell-list-page.ts +337 -0
  5. package/client/pages/rack/rack-importer.ts +97 -0
  6. package/client/pages/rack/rack-list-page.ts +337 -0
  7. package/client/route.ts +11 -0
  8. package/dist-server/index.d.ts +1 -0
  9. package/dist-server/index.js +1 -5
  10. package/dist-server/index.js.map +1 -1
  11. package/dist-server/migrations/index.d.ts +1 -0
  12. package/dist-server/routes.d.ts +0 -0
  13. package/dist-server/routes.js +0 -1
  14. package/dist-server/routes.js.map +1 -1
  15. package/dist-server/service/cell/cell-mutation.d.ts +10 -0
  16. package/dist-server/service/cell/cell-mutation.js +128 -0
  17. package/dist-server/service/cell/cell-mutation.js.map +1 -0
  18. package/dist-server/service/cell/cell-query.d.ts +11 -0
  19. package/dist-server/service/cell/cell-query.js +79 -0
  20. package/dist-server/service/cell/cell-query.js.map +1 -0
  21. package/dist-server/service/cell/cell-type.d.ts +35 -0
  22. package/dist-server/service/cell/cell-type.js +137 -0
  23. package/dist-server/service/cell/cell-type.js.map +1 -0
  24. package/dist-server/service/cell/cell.d.ts +26 -0
  25. package/dist-server/{entities → service/cell}/cell.js +54 -44
  26. package/dist-server/service/cell/cell.js.map +1 -0
  27. package/dist-server/service/cell/index.d.ts +5 -0
  28. package/dist-server/service/cell/index.js +9 -0
  29. package/dist-server/service/cell/index.js.map +1 -0
  30. package/dist-server/service/index.d.ts +6 -0
  31. package/dist-server/service/index.js +23 -0
  32. package/dist-server/service/index.js.map +1 -0
  33. package/dist-server/service/rack/index.d.ts +5 -0
  34. package/dist-server/service/rack/index.js +9 -0
  35. package/dist-server/service/rack/index.js.map +1 -0
  36. package/dist-server/service/rack/rack-mutation.d.ts +10 -0
  37. package/dist-server/service/rack/rack-mutation.js +128 -0
  38. package/dist-server/service/rack/rack-mutation.js.map +1 -0
  39. package/dist-server/service/rack/rack-query.d.ts +12 -0
  40. package/dist-server/service/rack/rack-query.js +97 -0
  41. package/dist-server/service/rack/rack-query.js.map +1 -0
  42. package/dist-server/service/rack/rack-type.d.ts +21 -0
  43. package/dist-server/service/rack/rack-type.js +81 -0
  44. package/dist-server/service/rack/rack-type.js.map +1 -0
  45. package/dist-server/service/rack/rack.d.ts +18 -0
  46. package/dist-server/{entities → service/rack}/rack.js +36 -24
  47. package/dist-server/service/rack/rack.js.map +1 -0
  48. package/dist-server/tsconfig.tsbuildinfo +1 -1
  49. package/package.json +12 -10
  50. package/server/index.ts +1 -6
  51. package/server/routes.ts +0 -2
  52. package/server/service/cell/cell-mutation.ts +133 -0
  53. package/server/service/cell/cell-query.ts +50 -0
  54. package/server/service/cell/cell-type.ts +96 -0
  55. package/server/service/cell/cell.ts +112 -0
  56. package/server/service/cell/index.ts +6 -0
  57. package/server/service/index.ts +22 -0
  58. package/server/service/rack/index.ts +6 -0
  59. package/server/service/rack/rack-mutation.ts +133 -0
  60. package/server/service/rack/rack-query.ts +64 -0
  61. package/server/service/rack/rack-type.ts +54 -0
  62. package/server/service/rack/rack.ts +76 -0
  63. package/things-factory.config.js +4 -6
  64. package/client/actions/main.js +0 -1
  65. package/client/bootstrap.js +0 -8
  66. package/client/index.js +0 -1
  67. package/client/pages/main.js +0 -27
  68. package/client/reducers/main.js +0 -17
  69. package/client/route.js +0 -10
  70. package/dist-server/controllers/index.js +0 -1
  71. package/dist-server/controllers/index.js.map +0 -1
  72. package/dist-server/entities/cell.js.map +0 -1
  73. package/dist-server/entities/index.js +0 -12
  74. package/dist-server/entities/index.js.map +0 -1
  75. package/dist-server/entities/rack.js.map +0 -1
  76. package/dist-server/graphql/index.js +0 -11
  77. package/dist-server/graphql/index.js.map +0 -1
  78. package/dist-server/graphql/resolvers/cell/cell.js +0 -15
  79. package/dist-server/graphql/resolvers/cell/cell.js.map +0 -1
  80. package/dist-server/graphql/resolvers/cell/cells.js +0 -14
  81. package/dist-server/graphql/resolvers/cell/cells.js.map +0 -1
  82. package/dist-server/graphql/resolvers/cell/create-cell.js +0 -11
  83. package/dist-server/graphql/resolvers/cell/create-cell.js.map +0 -1
  84. package/dist-server/graphql/resolvers/cell/delete-cell.js +0 -12
  85. package/dist-server/graphql/resolvers/cell/delete-cell.js.map +0 -1
  86. package/dist-server/graphql/resolvers/cell/delete-cells.js +0 -15
  87. package/dist-server/graphql/resolvers/cell/delete-cells.js.map +0 -1
  88. package/dist-server/graphql/resolvers/cell/index.js +0 -13
  89. package/dist-server/graphql/resolvers/cell/index.js.map +0 -1
  90. package/dist-server/graphql/resolvers/cell/update-cell.js +0 -15
  91. package/dist-server/graphql/resolvers/cell/update-cell.js.map +0 -1
  92. package/dist-server/graphql/resolvers/cell/update-multiple-cell.js +0 -30
  93. package/dist-server/graphql/resolvers/cell/update-multiple-cell.js.map +0 -1
  94. package/dist-server/graphql/resolvers/index.js +0 -15
  95. package/dist-server/graphql/resolvers/index.js.map +0 -1
  96. package/dist-server/graphql/resolvers/rack/create-rack.js +0 -11
  97. package/dist-server/graphql/resolvers/rack/create-rack.js.map +0 -1
  98. package/dist-server/graphql/resolvers/rack/delete-rack.js +0 -12
  99. package/dist-server/graphql/resolvers/rack/delete-rack.js.map +0 -1
  100. package/dist-server/graphql/resolvers/rack/delete-racks.js +0 -15
  101. package/dist-server/graphql/resolvers/rack/delete-racks.js.map +0 -1
  102. package/dist-server/graphql/resolvers/rack/index.js +0 -13
  103. package/dist-server/graphql/resolvers/rack/index.js.map +0 -1
  104. package/dist-server/graphql/resolvers/rack/rack.js +0 -15
  105. package/dist-server/graphql/resolvers/rack/rack.js.map +0 -1
  106. package/dist-server/graphql/resolvers/rack/racks.js +0 -14
  107. package/dist-server/graphql/resolvers/rack/racks.js.map +0 -1
  108. package/dist-server/graphql/resolvers/rack/update-multiple-rack.js +0 -30
  109. package/dist-server/graphql/resolvers/rack/update-multiple-rack.js.map +0 -1
  110. package/dist-server/graphql/resolvers/rack/update-rack.js +0 -15
  111. package/dist-server/graphql/resolvers/rack/update-rack.js.map +0 -1
  112. package/dist-server/graphql/types/cell/cell-list.js +0 -12
  113. package/dist-server/graphql/types/cell/cell-list.js.map +0 -1
  114. package/dist-server/graphql/types/cell/cell-patch.js +0 -24
  115. package/dist-server/graphql/types/cell/cell-patch.js.map +0 -1
  116. package/dist-server/graphql/types/cell/cell.js +0 -28
  117. package/dist-server/graphql/types/cell/cell.js.map +0 -1
  118. package/dist-server/graphql/types/cell/index.js +0 -35
  119. package/dist-server/graphql/types/cell/index.js.map +0 -1
  120. package/dist-server/graphql/types/cell/new-cell.js +0 -22
  121. package/dist-server/graphql/types/cell/new-cell.js.map +0 -1
  122. package/dist-server/graphql/types/index.js +0 -19
  123. package/dist-server/graphql/types/index.js.map +0 -1
  124. package/dist-server/graphql/types/rack/index.js +0 -35
  125. package/dist-server/graphql/types/rack/index.js.map +0 -1
  126. package/dist-server/graphql/types/rack/new-rack.js +0 -15
  127. package/dist-server/graphql/types/rack/new-rack.js.map +0 -1
  128. package/dist-server/graphql/types/rack/rack-list.js +0 -12
  129. package/dist-server/graphql/types/rack/rack-list.js.map +0 -1
  130. package/dist-server/graphql/types/rack/rack-patch.js +0 -16
  131. package/dist-server/graphql/types/rack/rack-patch.js.map +0 -1
  132. package/dist-server/graphql/types/rack/rack.js +0 -21
  133. package/dist-server/graphql/types/rack/rack.js.map +0 -1
  134. package/dist-server/middlewares/index.js +0 -8
  135. package/dist-server/middlewares/index.js.map +0 -1
  136. package/server/entities/cell.ts +0 -95
  137. package/server/entities/index.ts +0 -12
  138. package/server/entities/rack.ts +0 -56
  139. package/server/graphql/index.ts +0 -7
  140. package/server/graphql/resolvers/cell/cell.ts +0 -14
  141. package/server/graphql/resolvers/cell/cells.ts +0 -14
  142. package/server/graphql/resolvers/cell/create-cell.ts +0 -14
  143. package/server/graphql/resolvers/cell/delete-cell.ts +0 -10
  144. package/server/graphql/resolvers/cell/delete-cells.ts +0 -13
  145. package/server/graphql/resolvers/cell/index.ts +0 -21
  146. package/server/graphql/resolvers/cell/update-cell.ts +0 -17
  147. package/server/graphql/resolvers/cell/update-multiple-cell.ts +0 -44
  148. package/server/graphql/resolvers/index.ts +0 -12
  149. package/server/graphql/resolvers/rack/create-rack.ts +0 -14
  150. package/server/graphql/resolvers/rack/delete-rack.ts +0 -10
  151. package/server/graphql/resolvers/rack/delete-racks.ts +0 -13
  152. package/server/graphql/resolvers/rack/index.ts +0 -21
  153. package/server/graphql/resolvers/rack/rack.ts +0 -14
  154. package/server/graphql/resolvers/rack/racks.ts +0 -14
  155. package/server/graphql/resolvers/rack/update-multiple-rack.ts +0 -44
  156. package/server/graphql/resolvers/rack/update-rack.ts +0 -17
  157. package/server/graphql/types/cell/cell-list.ts +0 -8
  158. package/server/graphql/types/cell/cell-patch.ts +0 -20
  159. package/server/graphql/types/cell/cell.ts +0 -24
  160. package/server/graphql/types/cell/index.ts +0 -34
  161. package/server/graphql/types/cell/new-cell.ts +0 -18
  162. package/server/graphql/types/index.ts +0 -17
  163. package/server/graphql/types/rack/index.ts +0 -34
  164. package/server/graphql/types/rack/new-rack.ts +0 -11
  165. package/server/graphql/types/rack/rack-list.ts +0 -8
  166. package/server/graphql/types/rack/rack-patch.ts +0 -12
  167. package/server/graphql/types/rack/rack.ts +0 -17
  168. package/server/middlewares/index.ts +0 -3
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@things-factory/rack-base",
3
- "version": "5.0.8",
3
+ "version": "6.0.0-alpha.0",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
7
7
  "license": "MIT",
8
- "author": "heartyoh",
8
+ "author": "heartyoh <heartyoh@hatiolab.com>",
9
9
  "description": "rack-base",
10
10
  "publishConfig": {
11
11
  "access": "public",
@@ -17,18 +17,20 @@
17
17
  "directory": "packages/rack-base"
18
18
  },
19
19
  "scripts": {
20
- "build": "tsc --p tsconfig.json",
21
- "build:server": "npm run clean:server && tsc",
22
- "clean:server": "rm -rf dist-server",
23
- "clean": "npm run clean:server",
20
+ "build": "npm run build:server && npm run build:client",
21
+ "build:client": "npx tsc --p ./client/tsconfig.json",
22
+ "build:server": "npx tsc --p ./server/tsconfig.json",
23
+ "clean:client": "npx rimraf dist-client",
24
+ "clean:server": "npx rimraf dist-server",
25
+ "clean": "npm run clean:server && npm run clean:client",
24
26
  "migration:create": "node ../../node_modules/typeorm/cli.js migration:create -d ./server/migrations"
25
27
  },
26
28
  "dependencies": {
27
- "@things-factory/auth-base": "^5.0.7",
28
- "@things-factory/shell": "^5.0.7"
29
+ "@things-factory/auth-base": "^6.0.0-alpha.0",
30
+ "@things-factory/shell": "^6.0.0-alpha.0"
29
31
  },
30
32
  "devDependencies": {
31
- "@things-factory/builder": "^5.0.8"
33
+ "@things-factory/builder": "^6.0.0-alpha.0"
32
34
  },
33
- "gitHead": "de14539186ad35c0bd1379b8ae4dccda7b13256e"
35
+ "gitHead": "e5b9823ab3ebc5d6ae5bcb4b5aa60c1306e4dd7e"
34
36
  }
package/server/index.ts CHANGED
@@ -1,6 +1 @@
1
- export * from './entities'
2
- export * from './migrations'
3
- export * from './graphql'
4
- export * from './middlewares'
5
-
6
- import './routes'
1
+ export * from './service'
package/server/routes.ts CHANGED
@@ -1,5 +1,3 @@
1
- const debug = require('debug')('things-factory:rack-base:routes')
2
-
3
1
  process.on('bootstrap-module-global-public-route' as any, (app, globalPublicRouter) => {
4
2
  /*
5
3
  * can add global public routes to application (auth not required, tenancy not required)
@@ -0,0 +1,133 @@
1
+ import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'
2
+ import { In } from 'typeorm'
3
+
4
+ import { deleteAttachmentsByRef } from '@things-factory/attachment-base'
5
+
6
+ import { Cell } from './cell'
7
+ import { CellPatch, NewCell } from './cell-type'
8
+
9
+ @Resolver(Cell)
10
+ export class CellMutation {
11
+ @Directive('@transaction')
12
+ @Mutation(returns => Cell, { description: 'To create new Cell' })
13
+ async createCell(@Arg('cell') cell: NewCell, @Ctx() context: ResolverContext): Promise<Cell> {
14
+ const { domain, user, tx } = context.state
15
+
16
+ return await tx.getRepository(Cell).save({
17
+ ...cell,
18
+ domain,
19
+ creator: user,
20
+ updater: user
21
+ })
22
+ }
23
+
24
+ @Directive('@transaction')
25
+ @Mutation(returns => Cell, { description: 'To modify Cell information' })
26
+ async updateCell(
27
+ @Arg('id') id: string,
28
+ @Arg('patch') patch: CellPatch,
29
+ @Ctx() context: ResolverContext
30
+ ): Promise<Cell> {
31
+ const { domain, user, tx } = context.state
32
+
33
+ const repository = tx.getRepository(Cell)
34
+ const cell = await repository.findOne({
35
+ where: { domain: { id: domain.id }, id }
36
+ })
37
+
38
+ return await repository.save({
39
+ ...cell,
40
+ ...patch,
41
+ updater: user
42
+ })
43
+ }
44
+
45
+ @Directive('@transaction')
46
+ @Mutation(returns => [Cell], { description: "To modify multiple Cells' information" })
47
+ async updateMultipleCell(
48
+ @Arg('patches', type => [CellPatch]) patches: CellPatch[],
49
+ @Ctx() context: ResolverContext
50
+ ): Promise<Cell[]> {
51
+ const { domain, user, tx } = context.state
52
+
53
+ let results = []
54
+ const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')
55
+ const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
56
+ const cellRepo = tx.getRepository(Cell)
57
+
58
+ if (_createRecords.length > 0) {
59
+ for (let i = 0; i < _createRecords.length; i++) {
60
+ const newRecord = _createRecords[i]
61
+
62
+ const result = await cellRepo.save({
63
+ ...newRecord,
64
+ domain,
65
+ creator: user,
66
+ updater: user
67
+ })
68
+
69
+ results.push({ ...result, cuFlag: '+' })
70
+ }
71
+ }
72
+
73
+ if (_updateRecords.length > 0) {
74
+ for (let i = 0; i < _updateRecords.length; i++) {
75
+ const updateRecord = _updateRecords[i]
76
+ const cell = await cellRepo.findOneBy({ id: updateRecord.id })
77
+
78
+ const result = await cellRepo.save({
79
+ ...cell,
80
+ ...updateRecord,
81
+ updater: user
82
+ })
83
+
84
+ results.push({ ...result, cuFlag: 'M' })
85
+ }
86
+ }
87
+
88
+ return results
89
+ }
90
+
91
+ @Directive('@transaction')
92
+ @Mutation(returns => Boolean, { description: 'To delete Cell' })
93
+ async deleteCell(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {
94
+ const { domain, tx } = context.state
95
+
96
+ await tx.getRepository(Cell).delete({ domain: { id: domain.id }, id })
97
+ await deleteAttachmentsByRef(null, { refBys: [id] }, context)
98
+
99
+ return true
100
+ }
101
+
102
+ @Directive('@transaction')
103
+ @Mutation(returns => Boolean, { description: 'To delete multiple Cells' })
104
+ async deleteCells(@Arg('ids', type => [String]) ids: string[], @Ctx() context: ResolverContext): Promise<boolean> {
105
+ const { domain, tx } = context.state
106
+
107
+ await tx.getRepository(Cell).delete({
108
+ domain: { id: domain.id },
109
+ id: In(ids)
110
+ })
111
+
112
+ await deleteAttachmentsByRef(null, { refBys: ids }, context)
113
+
114
+ return true
115
+ }
116
+
117
+ @Directive('@transaction')
118
+ @Mutation(returns => Boolean, { description: 'To import multiple Cells' })
119
+ async importCells(
120
+ @Arg('cells', type => [CellPatch]) cells: CellPatch[],
121
+ @Ctx() context: ResolverContext
122
+ ): Promise<boolean> {
123
+ const { domain, tx } = context.state
124
+
125
+ await Promise.all(
126
+ cells.map(async (cell: CellPatch) => {
127
+ const createdCell: Cell = await tx.getRepository(Cell).save({ domain, ...cell })
128
+ })
129
+ )
130
+
131
+ return true
132
+ }
133
+ }
@@ -0,0 +1,50 @@
1
+ import { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'
2
+
3
+ import { User } from '@things-factory/auth-base'
4
+ import { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'
5
+
6
+ import { Cell } from './cell'
7
+ import { CellList } from './cell-type'
8
+
9
+ @Resolver(Cell)
10
+ export class CellQuery {
11
+ @Query(returns => Cell!, { nullable: true, description: 'To fetch a Cell' })
12
+ async cell(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Cell> {
13
+ const { domain } = context.state
14
+
15
+ return await getRepository(Cell).findOne({
16
+ where: { domain: { id: domain.id }, id }
17
+ })
18
+ }
19
+
20
+ @Query(returns => CellList, { description: 'To fetch multiple Cells' })
21
+ async cells(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<CellList> {
22
+ const { domain } = context.state
23
+
24
+ const queryBuilder = getQueryBuilderFromListParams({
25
+ domain,
26
+ params,
27
+ repository: await getRepository(Cell),
28
+ searchables: ['name', 'description']
29
+ })
30
+
31
+ const [items, total] = await queryBuilder.getManyAndCount()
32
+
33
+ return { items, total }
34
+ }
35
+
36
+ @FieldResolver(type => Domain)
37
+ async domain(@Root() cell: Cell): Promise<Domain> {
38
+ return await getRepository(Domain).findOneBy({ id: cell.domainId })
39
+ }
40
+
41
+ @FieldResolver(type => User)
42
+ async updater(@Root() cell: Cell): Promise<User> {
43
+ return await getRepository(User).findOneBy({ id: cell.updaterId })
44
+ }
45
+
46
+ @FieldResolver(type => User)
47
+ async creator(@Root() cell: Cell): Promise<User> {
48
+ return await getRepository(User).findOneBy({ id: cell.creatorId })
49
+ }
50
+ }
@@ -0,0 +1,96 @@
1
+ import { Field, ID, InputType, Int, ObjectType } from 'type-graphql'
2
+
3
+ import { Cell } from './cell'
4
+
5
+ @InputType()
6
+ export class NewCell {
7
+ @Field({ nullable: true })
8
+ stationCd: string
9
+
10
+ @Field()
11
+ equipCd: string
12
+
13
+ @Field()
14
+ cellCd: string
15
+
16
+ @Field()
17
+ indCd: string
18
+
19
+ @Field()
20
+ channelNo: string
21
+
22
+ @Field()
23
+ panNo: string
24
+
25
+ @Field({ nullable: true })
26
+ equipZone?: string
27
+
28
+ @Field({ nullable: true })
29
+ sideCd?: string
30
+
31
+ @Field({ nullable: true })
32
+ cellSeq?: number
33
+
34
+ @Field({ nullable: true })
35
+ printerCd?: string
36
+
37
+ @Field({ nullable: true })
38
+ activeFlag?: boolean
39
+
40
+ @Field({ nullable: true })
41
+ status?: string
42
+ }
43
+
44
+ @InputType()
45
+ export class CellPatch {
46
+ @Field(type => ID, { nullable: true })
47
+ id?: string
48
+
49
+ @Field({ nullable: true })
50
+ stationCd?: string
51
+
52
+ @Field({ nullable: true })
53
+ equipCd?: string
54
+
55
+ @Field({ nullable: true })
56
+ cellCd?: string
57
+
58
+ @Field({ nullable: true })
59
+ indCd?: string
60
+
61
+ @Field({ nullable: true })
62
+ channelNo?: string
63
+
64
+ @Field({ nullable: true })
65
+ panNo?: string
66
+
67
+ @Field({ nullable: true })
68
+ equipZone?: string
69
+
70
+ @Field({ nullable: true })
71
+ sideCd?: string
72
+
73
+ @Field({ nullable: true })
74
+ cellSeq?: number
75
+
76
+ @Field({ nullable: true })
77
+ printerCd?: string
78
+
79
+ @Field({ nullable: true })
80
+ activeFlag?: boolean
81
+
82
+ @Field({ nullable: true })
83
+ status?: string
84
+
85
+ @Field({ nullable: true })
86
+ cuFlag?: string
87
+ }
88
+
89
+ @ObjectType()
90
+ export class CellList {
91
+ @Field(type => [Cell])
92
+ items: Cell[]
93
+
94
+ @Field(type => Int)
95
+ total: number
96
+ }
@@ -0,0 +1,112 @@
1
+ import { Field, ID, ObjectType } from 'type-graphql'
2
+ import {
3
+ Column,
4
+ CreateDateColumn,
5
+ Entity,
6
+ Index,
7
+ ManyToOne,
8
+ PrimaryGeneratedColumn,
9
+ RelationId,
10
+ UpdateDateColumn
11
+ } from 'typeorm'
12
+
13
+ import { User } from '@things-factory/auth-base'
14
+ import { Domain } from '@things-factory/shell'
15
+
16
+ @Entity()
17
+ @Index('ix_cell_0', (cell: Cell) => [cell.domain, cell.cellCd], { unique: true })
18
+ @ObjectType({ description: 'Entity for Cell' })
19
+ export class Cell {
20
+ @PrimaryGeneratedColumn('uuid')
21
+ @Field(type => ID)
22
+ readonly id: string
23
+
24
+ @ManyToOne(type => Domain)
25
+ @Field({ nullable: true })
26
+ domain?: Domain
27
+
28
+ @RelationId((cell: Cell) => cell.domain)
29
+ domainId?: string
30
+
31
+ @Column({ nullable: true, length: 30 })
32
+ @Field({ nullable: true })
33
+ stationCd: string
34
+
35
+ @Column({ length: 30 })
36
+ @Field()
37
+ equipCd: string
38
+
39
+ @Column({ length: 30 })
40
+ @Field()
41
+ cellCd: string
42
+
43
+ @Column({ length: 30 })
44
+ @Field()
45
+ indCd: string
46
+
47
+ @Column({ length: 40 })
48
+ @Field()
49
+ channelNo: string
50
+
51
+ @Column({ length: 40 })
52
+ @Field()
53
+ panNo: string
54
+
55
+ @Column({ nullable: true, length: 30 })
56
+ @Field({ nullable: true })
57
+ equipZone?: string
58
+
59
+ @Column({ nullable: true, length: 30 })
60
+ @Field({ nullable: true })
61
+ sideCd?: string
62
+
63
+ @Column({ nullable: true, width: 10 })
64
+ @Field({ nullable: true })
65
+ cellSeq?: number
66
+
67
+ @Column({ nullable: true, length: 30 })
68
+ @Field({ nullable: true })
69
+ printerCd?: string
70
+
71
+ @Column({
72
+ nullable: true
73
+ })
74
+ @Field({ nullable: true })
75
+ activeFlag?: boolean
76
+
77
+ @Column({ nullable: true, width: 10 })
78
+ @Field({ nullable: true })
79
+ status?: string
80
+
81
+ @Column({
82
+ nullable: true
83
+ })
84
+ @Field({ nullable: true })
85
+ params?: string
86
+
87
+ @CreateDateColumn()
88
+ @Field({ nullable: true })
89
+ createdAt?: Date
90
+
91
+ @UpdateDateColumn()
92
+ @Field({ nullable: true })
93
+ updatedAt?: Date
94
+
95
+ @ManyToOne(type => User, {
96
+ nullable: true
97
+ })
98
+ @Field({ nullable: true })
99
+ creator?: User
100
+
101
+ @RelationId((cell: Cell) => cell.creator)
102
+ creatorId?: string
103
+
104
+ @ManyToOne(type => User, {
105
+ nullable: true
106
+ })
107
+ @Field({ nullable: true })
108
+ updater?: User
109
+
110
+ @RelationId((cell: Cell) => cell.creator)
111
+ updaterId?: string
112
+ }
@@ -0,0 +1,6 @@
1
+ import { Cell } from './cell'
2
+ import { CellQuery } from './cell-query'
3
+ import { CellMutation } from './cell-mutation'
4
+
5
+ export const entities = [Cell]
6
+ export const resolvers = [CellQuery, CellMutation]
@@ -0,0 +1,22 @@
1
+ /* EXPORT ENTITY TYPES */
2
+ export * from './rack/rack'
3
+ export * from './cell/cell'
4
+
5
+ /* IMPORT ENTITIES AND RESOLVERS */
6
+ import { entities as RackEntities, resolvers as RackResolvers } from './rack'
7
+ import { entities as CellEntities, resolvers as CellResolvers } from './cell'
8
+
9
+ export const entities = [
10
+ /* ENTITIES */
11
+ ...RackEntities,
12
+ ...CellEntities,
13
+ ]
14
+
15
+
16
+ export const schema = {
17
+ resolverClasses: [
18
+ /* RESOLVER CLASSES */
19
+ ...RackResolvers,
20
+ ...CellResolvers,
21
+ ]
22
+ }
@@ -0,0 +1,6 @@
1
+ import { Rack } from './rack'
2
+ import { RackQuery } from './rack-query'
3
+ import { RackMutation } from './rack-mutation'
4
+
5
+ export const entities = [Rack]
6
+ export const resolvers = [RackQuery, RackMutation]
@@ -0,0 +1,133 @@
1
+ import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'
2
+ import { In } from 'typeorm'
3
+
4
+ import { deleteAttachmentsByRef } from '@things-factory/attachment-base'
5
+
6
+ import { Rack } from './rack'
7
+ import { NewRack, RackPatch } from './rack-type'
8
+
9
+ @Resolver(Rack)
10
+ export class RackMutation {
11
+ @Directive('@transaction')
12
+ @Mutation(returns => Rack, { description: 'To create new Rack' })
13
+ async createRack(@Arg('rack') rack: NewRack, @Ctx() context: ResolverContext): Promise<Rack> {
14
+ const { domain, user, tx } = context.state
15
+
16
+ return await tx.getRepository(Rack).save({
17
+ ...rack,
18
+ domain,
19
+ creator: user,
20
+ updater: user
21
+ })
22
+ }
23
+
24
+ @Directive('@transaction')
25
+ @Mutation(returns => Rack, { description: 'To modify Rack information' })
26
+ async updateRack(
27
+ @Arg('id') id: string,
28
+ @Arg('patch') patch: RackPatch,
29
+ @Ctx() context: ResolverContext
30
+ ): Promise<Rack> {
31
+ const { domain, user, tx } = context.state
32
+
33
+ const repository = tx.getRepository(Rack)
34
+ const rack = await repository.findOne({
35
+ where: { domain: { id: domain.id }, id }
36
+ })
37
+
38
+ return await repository.save({
39
+ ...rack,
40
+ ...patch,
41
+ updater: user
42
+ })
43
+ }
44
+
45
+ @Directive('@transaction')
46
+ @Mutation(returns => [Rack], { description: "To modify multiple Racks' information" })
47
+ async updateMultipleRack(
48
+ @Arg('patches', type => [RackPatch]) patches: RackPatch[],
49
+ @Ctx() context: ResolverContext
50
+ ): Promise<Rack[]> {
51
+ const { domain, user, tx } = context.state
52
+
53
+ let results = []
54
+ const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')
55
+ const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
56
+ const rackRepo = tx.getRepository(Rack)
57
+
58
+ if (_createRecords.length > 0) {
59
+ for (let i = 0; i < _createRecords.length; i++) {
60
+ const newRecord = _createRecords[i]
61
+
62
+ const result = await rackRepo.save({
63
+ ...newRecord,
64
+ domain,
65
+ creator: user,
66
+ updater: user
67
+ })
68
+
69
+ results.push({ ...result, cuFlag: '+' })
70
+ }
71
+ }
72
+
73
+ if (_updateRecords.length > 0) {
74
+ for (let i = 0; i < _updateRecords.length; i++) {
75
+ const updateRecord = _updateRecords[i]
76
+ const rack = await rackRepo.findOneBy({ id: updateRecord.id })
77
+
78
+ const result = await rackRepo.save({
79
+ ...rack,
80
+ ...updateRecord,
81
+ updater: user
82
+ })
83
+
84
+ results.push({ ...result, cuFlag: 'M' })
85
+ }
86
+ }
87
+
88
+ return results
89
+ }
90
+
91
+ @Directive('@transaction')
92
+ @Mutation(returns => Boolean, { description: 'To delete Rack' })
93
+ async deleteRack(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {
94
+ const { domain, tx } = context.state
95
+
96
+ await tx.getRepository(Rack).delete({ domain: { id: domain.id }, id })
97
+ await deleteAttachmentsByRef(null, { refBys: [id] }, context)
98
+
99
+ return true
100
+ }
101
+
102
+ @Directive('@transaction')
103
+ @Mutation(returns => Boolean, { description: 'To delete multiple Racks' })
104
+ async deleteRacks(@Arg('ids', type => [String]) ids: string[], @Ctx() context: ResolverContext): Promise<boolean> {
105
+ const { domain, tx } = context.state
106
+
107
+ await tx.getRepository(Rack).delete({
108
+ domain: { id: domain.id },
109
+ id: In(ids)
110
+ })
111
+
112
+ await deleteAttachmentsByRef(null, { refBys: ids }, context)
113
+
114
+ return true
115
+ }
116
+
117
+ @Directive('@transaction')
118
+ @Mutation(returns => Boolean, { description: 'To import multiple Racks' })
119
+ async importRacks(
120
+ @Arg('racks', type => [RackPatch]) racks: RackPatch[],
121
+ @Ctx() context: ResolverContext
122
+ ): Promise<boolean> {
123
+ const { domain, tx } = context.state
124
+
125
+ await Promise.all(
126
+ racks.map(async (rack: RackPatch) => {
127
+ const createdRack: Rack = await tx.getRepository(Rack).save({ domain, ...rack })
128
+ })
129
+ )
130
+
131
+ return true
132
+ }
133
+ }
@@ -0,0 +1,64 @@
1
+ import { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'
2
+
3
+ import { Attachment } from '@things-factory/attachment-base'
4
+ import { User } from '@things-factory/auth-base'
5
+ import { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'
6
+
7
+ import { Rack } from './rack'
8
+ import { RackList } from './rack-type'
9
+
10
+ @Resolver(Rack)
11
+ export class RackQuery {
12
+ @Query(returns => Rack!, { nullable: true, description: 'To fetch a Rack' })
13
+ async rack(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Rack> {
14
+ const { domain } = context.state
15
+
16
+ return await getRepository(Rack).findOne({
17
+ where: { domain: { id: domain.id }, id }
18
+ })
19
+ }
20
+
21
+ @Query(returns => RackList, { description: 'To fetch multiple Racks' })
22
+ async racks(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<RackList> {
23
+ const { domain } = context.state
24
+
25
+ const queryBuilder = getQueryBuilderFromListParams({
26
+ domain,
27
+ params,
28
+ repository: await getRepository(Rack),
29
+ searchables: ['name', 'description']
30
+ })
31
+
32
+ const [items, total] = await queryBuilder.getManyAndCount()
33
+
34
+ return { items, total }
35
+ }
36
+
37
+ @FieldResolver(type => String)
38
+ async thumbnail(@Root() rack: Rack): Promise<string | undefined> {
39
+ const attachment: Attachment = await getRepository(Attachment).findOne({
40
+ where: {
41
+ domain: { id: rack.domainId },
42
+ refType: Rack.name,
43
+ refBy: rack.id
44
+ }
45
+ })
46
+
47
+ return attachment?.fullpath
48
+ }
49
+
50
+ @FieldResolver(type => Domain)
51
+ async domain(@Root() rack: Rack): Promise<Domain> {
52
+ return await getRepository(Domain).findOneBy({ id: rack.domainId })
53
+ }
54
+
55
+ @FieldResolver(type => User)
56
+ async updater(@Root() rack: Rack): Promise<User> {
57
+ return await getRepository(User).findOneBy({ id: rack.updaterId })
58
+ }
59
+
60
+ @FieldResolver(type => User)
61
+ async creator(@Root() rack: Rack): Promise<User> {
62
+ return await getRepository(User).findOneBy({ id: rack.creatorId })
63
+ }
64
+ }