@dssp/project 1.0.0-alpha.0 → 1.0.0-alpha.100

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 (330) hide show
  1. package/dist-client/index.d.ts +1 -0
  2. package/dist-client/index.js +1 -1
  3. package/dist-client/index.js.map +1 -1
  4. package/dist-client/pages/lib/chatbot-widget.d.ts +53 -0
  5. package/dist-client/pages/lib/chatbot-widget.js +631 -0
  6. package/dist-client/pages/lib/chatbot-widget.js.map +1 -0
  7. package/dist-client/pages/lib/select2-component.d.ts +1 -1
  8. package/dist-client/pages/lib/select2-component.js +36 -36
  9. package/dist-client/pages/lib/select2-component.js.map +1 -1
  10. package/dist-client/pages/lib/waether.d.ts +2 -1
  11. package/dist-client/pages/lib/waether.js +7 -3
  12. package/dist-client/pages/lib/waether.js.map +1 -1
  13. package/dist-client/pages/project/component/pagenation.d.ts +18 -0
  14. package/dist-client/pages/project/component/pagenation.js +142 -0
  15. package/dist-client/pages/project/component/pagenation.js.map +1 -0
  16. package/dist-client/pages/project/component/project-update-header.js +26 -3
  17. package/dist-client/pages/project/component/project-update-header.js.map +1 -1
  18. package/dist-client/pages/project/popup/checklist/task-checklist-attachment-list-popup.d.ts +1 -0
  19. package/dist-client/pages/project/popup/checklist/task-checklist-attachment-list-popup.js +308 -0
  20. package/dist-client/pages/project/popup/checklist/task-checklist-attachment-list-popup.js.map +1 -0
  21. package/dist-client/pages/project/popup/checklist/task-checklist-comment-list-popup.d.ts +1 -0
  22. package/dist-client/pages/project/popup/checklist/task-checklist-comment-list-popup.js +356 -0
  23. package/dist-client/pages/project/popup/checklist/task-checklist-comment-list-popup.js.map +1 -0
  24. package/dist-client/pages/project/popup/checklist/task-checklist-create-popup.d.ts +1 -0
  25. package/dist-client/pages/project/popup/checklist/task-checklist-create-popup.js +682 -0
  26. package/dist-client/pages/project/popup/checklist/task-checklist-create-popup.js.map +1 -0
  27. package/dist-client/pages/project/popup/checklist/task-checklist-view.d.ts +33 -0
  28. package/dist-client/pages/project/popup/checklist/task-checklist-view.js +676 -0
  29. package/dist-client/pages/project/popup/checklist/task-checklist-view.js.map +1 -0
  30. package/dist-client/pages/project/popup/popup-plan-export.d.ts +10 -0
  31. package/dist-client/pages/project/popup/popup-plan-export.js +242 -0
  32. package/dist-client/pages/project/popup/popup-plan-export.js.map +1 -0
  33. package/dist-client/pages/project/popup/popup-plan-upload.d.ts +3 -0
  34. package/dist-client/pages/project/popup/popup-plan-upload.js +130 -4
  35. package/dist-client/pages/project/popup/popup-plan-upload.js.map +1 -1
  36. package/dist-client/pages/project/popup/popup-project-create.js.map +1 -1
  37. package/dist-client/pages/project/popup/{popup-schedule-upload.d.ts → popup-task-upload.d.ts} +1 -1
  38. package/dist-client/pages/project/popup/{popup-schedule-upload.js → popup-task-upload.js} +9 -9
  39. package/dist-client/pages/project/popup/popup-task-upload.js.map +1 -0
  40. package/dist-client/pages/project/project-completed-list.d.ts +5 -0
  41. package/dist-client/pages/project/project-completed-list.js +32 -4
  42. package/dist-client/pages/project/project-completed-list.js.map +1 -1
  43. package/dist-client/pages/project/project-detail.d.ts +8 -1
  44. package/dist-client/pages/project/project-detail.js +488 -163
  45. package/dist-client/pages/project/project-detail.js.map +1 -1
  46. package/dist-client/pages/project/project-list.d.ts +69 -0
  47. package/dist-client/pages/project/project-list.js +94 -16
  48. package/dist-client/pages/project/project-list.js.map +1 -1
  49. package/dist-client/pages/project/project-plan-management.js +35 -14
  50. package/dist-client/pages/project/project-plan-management.js.map +1 -1
  51. package/dist-client/pages/project/project-setting-list.d.ts +7 -0
  52. package/dist-client/pages/project/project-setting-list.js +82 -27
  53. package/dist-client/pages/project/project-setting-list.js.map +1 -1
  54. package/dist-client/pages/project/{project-schedule-list.d.ts → project-task-list.d.ts} +2 -2
  55. package/dist-client/pages/project/{project-schedule-list.js → project-task-list.js} +11 -11
  56. package/dist-client/pages/project/project-task-list.js.map +1 -0
  57. package/dist-client/pages/project/{project-schedule.d.ts → project-task.d.ts} +17 -4
  58. package/dist-client/pages/project/project-task.js +692 -0
  59. package/dist-client/pages/project/project-task.js.map +1 -0
  60. package/dist-client/pages/project/project-update.d.ts +35 -0
  61. package/dist-client/pages/project/project-update.js +633 -49
  62. package/dist-client/pages/project/project-update.js.map +1 -1
  63. package/dist-client/pages/resource/construction-detail-type-popup.js.map +1 -1
  64. package/dist-client/pages/resource/construction-type-management.js +14 -0
  65. package/dist-client/pages/resource/construction-type-management.js.map +1 -1
  66. package/dist-client/pages/resource/inspection-drawing-type-management.js.map +1 -1
  67. package/dist-client/pages/resource/inspection-part-popup.js.map +1 -1
  68. package/dist-client/pages/resource/resource-importer.js.map +1 -1
  69. package/dist-client/pages/resource/resource-list-page.d.ts +1 -2
  70. package/dist-client/pages/resource/resource-list-page.js +1 -2
  71. package/dist-client/pages/resource/resource-list-page.js.map +1 -1
  72. package/dist-client/pages/resource/worker-type-management.js.map +1 -1
  73. package/dist-client/pages/task/task-importer.js.map +1 -1
  74. package/dist-client/pages/task/task-list-page.d.ts +1 -2
  75. package/dist-client/pages/task/task-list-page.js +1 -2
  76. package/dist-client/pages/task/task-list-page.js.map +1 -1
  77. package/dist-client/pages/task-resource/task-resource-importer.js.map +1 -1
  78. package/dist-client/pages/task-resource/task-resource-list-page.d.ts +1 -2
  79. package/dist-client/pages/task-resource/task-resource-list-page.js +1 -2
  80. package/dist-client/pages/task-resource/task-resource-list-page.js.map +1 -1
  81. package/dist-client/route.d.ts +1 -1
  82. package/dist-client/route.js +4 -4
  83. package/dist-client/route.js.map +1 -1
  84. package/dist-client/shared/domain-context.d.ts +18 -0
  85. package/dist-client/shared/domain-context.js +28 -0
  86. package/dist-client/shared/domain-context.js.map +1 -0
  87. package/dist-client/tsconfig.tsbuildinfo +1 -1
  88. package/dist-client/viewparts/domain-switch.d.ts +19 -0
  89. package/dist-client/viewparts/domain-switch.js +274 -0
  90. package/dist-client/viewparts/domain-switch.js.map +1 -0
  91. package/dist-server/controllers/export-tasks.js +1 -2
  92. package/dist-server/controllers/export-tasks.js.map +1 -1
  93. package/dist-server/controllers/import-task.js +1 -2
  94. package/dist-server/controllers/import-task.js.map +1 -1
  95. package/dist-server/controllers/parse-excel.d.ts +0 -2
  96. package/dist-server/controllers/parse-excel.js +1 -2
  97. package/dist-server/controllers/parse-excel.js.map +1 -1
  98. package/dist-server/middlewares/index.js +1 -2
  99. package/dist-server/middlewares/index.js.map +1 -1
  100. package/dist-server/migrations/1723861466413-seed-roles.js.map +1 -1
  101. package/dist-server/migrations/1723861466414-seed-codes.js +1 -1
  102. package/dist-server/migrations/1723861466414-seed-codes.js.map +1 -1
  103. package/dist-server/migrations/1723861476419-seed-resources.js.map +1 -1
  104. package/dist-server/migrations/1723861478420-seed-/bsample-project.js.map +1 -1
  105. package/dist-server/migrations/1723861478421-seed-/bsample-tasks.js.map +1 -1
  106. package/dist-server/service/construction-detail-type/construction-detail-type-mutation.js +2 -2
  107. package/dist-server/service/construction-detail-type/construction-detail-type-mutation.js.map +1 -1
  108. package/dist-server/service/construction-detail-type/construction-detail-type-query.js +2 -2
  109. package/dist-server/service/construction-detail-type/construction-detail-type-query.js.map +1 -1
  110. package/dist-server/service/construction-detail-type/construction-detail-type-type.js +4 -4
  111. package/dist-server/service/construction-detail-type/construction-detail-type-type.js.map +1 -1
  112. package/dist-server/service/construction-detail-type/construction-detail-type.js +2 -2
  113. package/dist-server/service/construction-detail-type/construction-detail-type.js.map +1 -1
  114. package/dist-server/service/construction-type/construction-type-mutation.js +2 -2
  115. package/dist-server/service/construction-type/construction-type-mutation.js.map +1 -1
  116. package/dist-server/service/construction-type/construction-type-query.d.ts +2 -2
  117. package/dist-server/service/construction-type/construction-type-query.js +7 -12
  118. package/dist-server/service/construction-type/construction-type-query.js.map +1 -1
  119. package/dist-server/service/construction-type/construction-type-type.d.ts +1 -0
  120. package/dist-server/service/construction-type/construction-type-type.js +8 -4
  121. package/dist-server/service/construction-type/construction-type-type.js.map +1 -1
  122. package/dist-server/service/construction-type/construction-type.d.ts +1 -0
  123. package/dist-server/service/construction-type/construction-type.js +7 -2
  124. package/dist-server/service/construction-type/construction-type.js.map +1 -1
  125. package/dist-server/service/index.d.ts +3 -2
  126. package/dist-server/service/index.js +6 -2
  127. package/dist-server/service/index.js.map +1 -1
  128. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-mutation.js +2 -2
  129. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-mutation.js.map +1 -1
  130. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-query.d.ts +2 -2
  131. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-query.js +7 -12
  132. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-query.js.map +1 -1
  133. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-type.js +4 -4
  134. package/dist-server/service/inspection-drawing-type/inspection-drawing-type-type.js.map +1 -1
  135. package/dist-server/service/inspection-drawing-type/inspection-drawing-type.js +2 -2
  136. package/dist-server/service/inspection-drawing-type/inspection-drawing-type.js.map +1 -1
  137. package/dist-server/service/inspection-part/inspection-part-mutation.js +2 -2
  138. package/dist-server/service/inspection-part/inspection-part-mutation.js.map +1 -1
  139. package/dist-server/service/inspection-part/inspection-part-query.js +2 -2
  140. package/dist-server/service/inspection-part/inspection-part-query.js.map +1 -1
  141. package/dist-server/service/inspection-part/inspection-part-type.js +4 -4
  142. package/dist-server/service/inspection-part/inspection-part-type.js.map +1 -1
  143. package/dist-server/service/inspection-part/inspection-part.js +2 -2
  144. package/dist-server/service/inspection-part/inspection-part.js.map +1 -1
  145. package/dist-server/service/manager/index.d.ts +2 -0
  146. package/dist-server/service/manager/index.js +3 -1
  147. package/dist-server/service/manager/index.js.map +1 -1
  148. package/dist-server/service/manager/manager-mutation.js +2 -2
  149. package/dist-server/service/manager/manager-mutation.js.map +1 -1
  150. package/dist-server/service/manager/manager-query.d.ts +1 -1
  151. package/dist-server/service/manager/manager-query.js +5 -9
  152. package/dist-server/service/manager/manager-query.js.map +1 -1
  153. package/dist-server/service/manager/manager-type.js +4 -4
  154. package/dist-server/service/manager/manager-type.js.map +1 -1
  155. package/dist-server/service/manager/manager.js +2 -2
  156. package/dist-server/service/manager/manager.js.map +1 -1
  157. package/dist-server/service/project/issue-project-code.d.ts +7 -0
  158. package/dist-server/service/project/issue-project-code.js +27 -0
  159. package/dist-server/service/project/issue-project-code.js.map +1 -0
  160. package/dist-server/service/project/project-mutation.d.ts +3 -0
  161. package/dist-server/service/project/project-mutation.js +231 -24
  162. package/dist-server/service/project/project-mutation.js.map +1 -1
  163. package/dist-server/service/project/project-query.d.ts +14 -2
  164. package/dist-server/service/project/project-query.js +167 -16
  165. package/dist-server/service/project/project-query.js.map +1 -1
  166. package/dist-server/service/project/project-type.d.ts +14 -2
  167. package/dist-server/service/project/project-type.js +57 -11
  168. package/dist-server/service/project/project-type.js.map +1 -1
  169. package/dist-server/service/project/project.d.ts +29 -0
  170. package/dist-server/service/project/project.js +103 -5
  171. package/dist-server/service/project/project.js.map +1 -1
  172. package/dist-server/service/resource/resource-mutation.js +7 -8
  173. package/dist-server/service/resource/resource-mutation.js.map +1 -1
  174. package/dist-server/service/resource/resource-query.d.ts +2 -2
  175. package/dist-server/service/resource/resource-query.js +7 -12
  176. package/dist-server/service/resource/resource-query.js.map +1 -1
  177. package/dist-server/service/resource/resource-type.js +6 -6
  178. package/dist-server/service/resource/resource-type.js.map +1 -1
  179. package/dist-server/service/resource/resource.js +3 -3
  180. package/dist-server/service/resource/resource.js.map +1 -1
  181. package/dist-server/service/task/task-mutation.js +2 -2
  182. package/dist-server/service/task/task-mutation.js.map +1 -1
  183. package/dist-server/service/task/task-query.d.ts +2 -0
  184. package/dist-server/service/task/task-query.js +15 -4
  185. package/dist-server/service/task/task-query.js.map +1 -1
  186. package/dist-server/service/task/task-type.js +10 -10
  187. package/dist-server/service/task/task-type.js.map +1 -1
  188. package/dist-server/service/task/task.d.ts +2 -0
  189. package/dist-server/service/task/task.js +13 -8
  190. package/dist-server/service/task/task.js.map +1 -1
  191. package/dist-server/service/task-checklist-binding/index.d.ts +5 -0
  192. package/dist-server/service/task-checklist-binding/index.js +9 -0
  193. package/dist-server/service/task-checklist-binding/index.js.map +1 -0
  194. package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.d.ts +5 -0
  195. package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.js +188 -0
  196. package/dist-server/service/task-checklist-binding/task-checklist-binding-mutation.js.map +1 -0
  197. package/dist-server/service/task-checklist-binding/task-checklist-binding-query.d.ts +8 -0
  198. package/dist-server/service/task-checklist-binding/task-checklist-binding-query.js +61 -0
  199. package/dist-server/service/task-checklist-binding/task-checklist-binding-query.js.map +1 -0
  200. package/dist-server/service/task-checklist-binding/task-checklist-binding-type.d.ts +15 -0
  201. package/dist-server/service/task-checklist-binding/task-checklist-binding-type.js +57 -0
  202. package/dist-server/service/task-checklist-binding/task-checklist-binding-type.js.map +1 -0
  203. package/dist-server/service/task-checklist-binding/task-checklist-binding.d.ts +22 -0
  204. package/dist-server/service/task-checklist-binding/task-checklist-binding.js +106 -0
  205. package/dist-server/service/task-checklist-binding/task-checklist-binding.js.map +1 -0
  206. package/dist-server/service/task-resource/task-resource-mutation.js +2 -2
  207. package/dist-server/service/task-resource/task-resource-mutation.js.map +1 -1
  208. package/dist-server/service/task-resource/task-resource-query.d.ts +2 -2
  209. package/dist-server/service/task-resource/task-resource-query.js +6 -11
  210. package/dist-server/service/task-resource/task-resource-query.js.map +1 -1
  211. package/dist-server/service/task-resource/task-resource-type.js +6 -6
  212. package/dist-server/service/task-resource/task-resource-type.js.map +1 -1
  213. package/dist-server/service/task-resource/task-resource.js +2 -2
  214. package/dist-server/service/task-resource/task-resource.js.map +1 -1
  215. package/dist-server/service/worker-type/worker-type-mutation.js +2 -2
  216. package/dist-server/service/worker-type/worker-type-mutation.js.map +1 -1
  217. package/dist-server/service/worker-type/worker-type-query.d.ts +2 -2
  218. package/dist-server/service/worker-type/worker-type-query.js +7 -12
  219. package/dist-server/service/worker-type/worker-type-query.js.map +1 -1
  220. package/dist-server/service/worker-type/worker-type-type.js +4 -4
  221. package/dist-server/service/worker-type/worker-type-type.js.map +1 -1
  222. package/dist-server/service/worker-type/worker-type.js +2 -2
  223. package/dist-server/service/worker-type/worker-type.js.map +1 -1
  224. package/dist-server/tsconfig.tsbuildinfo +1 -1
  225. package/package.json +15 -11
  226. package/things-factory.config.js +3 -3
  227. package/translations/en.json +10 -9
  228. package/translations/ja.json +15 -1
  229. package/translations/ko.json +3 -0
  230. package/translations/ms.json +15 -1
  231. package/translations/zh.json +15 -1
  232. package/client/bootstrap.ts +0 -0
  233. package/client/index.ts +0 -0
  234. package/client/pages/lib/select2-component.ts +0 -175
  235. package/client/pages/lib/waether.ts +0 -159
  236. package/client/pages/project/component/project-update-header.ts +0 -88
  237. package/client/pages/project/popup/popup-plan-upload.ts +0 -138
  238. package/client/pages/project/popup/popup-project-create.ts +0 -147
  239. package/client/pages/project/popup/popup-schedule-upload.ts +0 -102
  240. package/client/pages/project/project-completed-list.ts +0 -281
  241. package/client/pages/project/project-detail.ts +0 -738
  242. package/client/pages/project/project-list.ts +0 -418
  243. package/client/pages/project/project-plan-management.ts +0 -476
  244. package/client/pages/project/project-schedule-list.ts +0 -294
  245. package/client/pages/project/project-schedule.ts +0 -393
  246. package/client/pages/project/project-setting-list.ts +0 -393
  247. package/client/pages/project/project-update.ts +0 -876
  248. package/client/pages/resource/construction-detail-type-popup.ts +0 -201
  249. package/client/pages/resource/construction-type-management.ts +0 -212
  250. package/client/pages/resource/inspection-drawing-type-management.ts +0 -245
  251. package/client/pages/resource/inspection-part-popup.ts +0 -201
  252. package/client/pages/resource/resource-importer.ts +0 -97
  253. package/client/pages/resource/resource-list-page.ts +0 -356
  254. package/client/pages/resource/worker-type-management.ts +0 -192
  255. package/client/pages/task/task-importer.ts +0 -94
  256. package/client/pages/task/task-list-page.ts +0 -340
  257. package/client/pages/task-resource/task-resource-importer.ts +0 -97
  258. package/client/pages/task-resource/task-resource-list-page.ts +0 -356
  259. package/client/route.ts +0 -55
  260. package/client/tsconfig.json +0 -11
  261. package/dist-client/pages/project/popup/popup-schedule-upload.js.map +0 -1
  262. package/dist-client/pages/project/project-schedule-list.js.map +0 -1
  263. package/dist-client/pages/project/project-schedule.js +0 -407
  264. package/dist-client/pages/project/project-schedule.js.map +0 -1
  265. package/server/controllers/export-tasks.ts +0 -40
  266. package/server/controllers/import-task.ts +0 -134
  267. package/server/controllers/index.ts +0 -0
  268. package/server/controllers/parse-excel.ts +0 -86
  269. package/server/controllers/types.ts +0 -20
  270. package/server/index.ts +0 -4
  271. package/server/middlewares/index.ts +0 -3
  272. package/server/migrations/1723861466413-seed-roles.ts +0 -128
  273. package/server/migrations/1723861466414-seed-codes.ts +0 -157
  274. package/server/migrations/1723861476419-seed-resources.ts +0 -62
  275. package/server/migrations/1723861478420-seed-/bsample-project.ts +0 -87
  276. package/server/migrations/1723861478421-seed-/bsample-tasks.ts +0 -194
  277. package/server/migrations/index.ts +0 -9
  278. package/server/routes.ts +0 -108
  279. package/server/service/construction-detail-type/construction-detail-type-mutation.ts +0 -57
  280. package/server/service/construction-detail-type/construction-detail-type-query.ts +0 -31
  281. package/server/service/construction-detail-type/construction-detail-type-type.ts +0 -26
  282. package/server/service/construction-detail-type/construction-detail-type.ts +0 -52
  283. package/server/service/construction-detail-type/index.ts +0 -6
  284. package/server/service/construction-type/construction-type-mutation.ts +0 -66
  285. package/server/service/construction-type/construction-type-query.ts +0 -56
  286. package/server/service/construction-type/construction-type-type.ts +0 -26
  287. package/server/service/construction-type/construction-type.ts +0 -74
  288. package/server/service/construction-type/index.ts +0 -6
  289. package/server/service/index.ts +0 -56
  290. package/server/service/inspection-drawing-type/index.ts +0 -6
  291. package/server/service/inspection-drawing-type/inspection-drawing-type-mutation.ts +0 -69
  292. package/server/service/inspection-drawing-type/inspection-drawing-type-query.ts +0 -55
  293. package/server/service/inspection-drawing-type/inspection-drawing-type-type.ts +0 -23
  294. package/server/service/inspection-drawing-type/inspection-drawing-type.ts +0 -68
  295. package/server/service/inspection-part/index.ts +0 -6
  296. package/server/service/inspection-part/inspection-part-mutation.ts +0 -52
  297. package/server/service/inspection-part/inspection-part-query.ts +0 -41
  298. package/server/service/inspection-part/inspection-part-type.ts +0 -26
  299. package/server/service/inspection-part/inspection-part.ts +0 -51
  300. package/server/service/manager/index.ts +0 -6
  301. package/server/service/manager/manager-mutation.ts +0 -42
  302. package/server/service/manager/manager-query.ts +0 -28
  303. package/server/service/manager/manager-type.ts +0 -40
  304. package/server/service/manager/manager.ts +0 -29
  305. package/server/service/project/index.ts +0 -6
  306. package/server/service/project/project-mutation.ts +0 -255
  307. package/server/service/project/project-query.ts +0 -105
  308. package/server/service/project/project-type.ts +0 -72
  309. package/server/service/project/project.ts +0 -134
  310. package/server/service/resource/index.ts +0 -7
  311. package/server/service/resource/resource-mutation.ts +0 -137
  312. package/server/service/resource/resource-query.ts +0 -50
  313. package/server/service/resource/resource-type.ts +0 -41
  314. package/server/service/resource/resource.ts +0 -82
  315. package/server/service/task/index.ts +0 -6
  316. package/server/service/task/task-mutation.ts +0 -135
  317. package/server/service/task/task-query.ts +0 -169
  318. package/server/service/task/task-type.ts +0 -75
  319. package/server/service/task/task.ts +0 -130
  320. package/server/service/task-resource/index.ts +0 -7
  321. package/server/service/task-resource/task-resource-mutation.ts +0 -140
  322. package/server/service/task-resource/task-resource-query.ts +0 -36
  323. package/server/service/task-resource/task-resource-type.ts +0 -41
  324. package/server/service/task-resource/task-resource.ts +0 -51
  325. package/server/service/worker-type/index.ts +0 -6
  326. package/server/service/worker-type/worker-type-mutation.ts +0 -66
  327. package/server/service/worker-type/worker-type-query.ts +0 -47
  328. package/server/service/worker-type/worker-type-type.ts +0 -26
  329. package/server/service/worker-type/worker-type.ts +0 -68
  330. package/server/tsconfig.json +0 -10
@@ -1,29 +0,0 @@
1
- import { Entity, Index, Column, RelationId, OneToOne, PrimaryGeneratedColumn, JoinColumn } from 'typeorm'
2
- import { ObjectType, Field, ID } from 'type-graphql'
3
- import { Domain } from '@things-factory/shell'
4
- import { User } from '@things-factory/auth-base'
5
-
6
- @Entity()
7
- @Index('ix_manager_0', (manager: Manager) => [manager.user])
8
- @ObjectType({ description: '담당자 관리' })
9
- export class Manager {
10
- @PrimaryGeneratedColumn('uuid')
11
- @Field(type => ID)
12
- readonly id: string
13
-
14
- @Column({ nullable: true, comment: '핸드폰 번호' })
15
- @Field({ nullable: true })
16
- phone?: string
17
-
18
- @Column({ nullable: true, comment: '직위' })
19
- @Field({ nullable: true })
20
- position?: string
21
-
22
- @OneToOne(type => User)
23
- @JoinColumn()
24
- @Field({ nullable: true })
25
- user?: User
26
-
27
- @RelationId((manager: Manager) => manager.user)
28
- userId?: string
29
- }
@@ -1,6 +0,0 @@
1
- import { Project } from './project'
2
- import { ProjectQuery } from './project-query'
3
- import { ProjectMutation } from './project-mutation'
4
-
5
- export const entities = [Project]
6
- export const resolvers = [ProjectQuery, ProjectMutation]
@@ -1,255 +0,0 @@
1
- import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'
2
- import { In } from 'typeorm'
3
- import { getRepository } from '@things-factory/shell'
4
- import { Attachment, createAttachment, deleteAttachmentsByRef, ATTACHMENT_PATH } from '@things-factory/attachment-base'
5
- import { Project, ProjectState } from './project'
6
- import { NewProject, ProjectPatch, UploadProjectScheduleTable } from './project-type'
7
- import { BuildingComplex, Building, BuildingLevel } from '@dssp/building-complex'
8
- import { pdfToImage } from '@things-factory/board-service/dist-server/controllers/headless-pdf-to-image'
9
-
10
- import { parseExcelAndImportTasks } from '../../controllers/parse-excel'
11
- @Resolver(Project)
12
- export class ProjectMutation {
13
- @Directive('@transaction')
14
- @Mutation(returns => Project, { description: '프로젝트 생성' })
15
- async createProject(@Arg('project') project: NewProject, @Ctx() context: ResolverContext): Promise<Project> {
16
- const { domain, user, tx } = context.state
17
- const projectRepo = getRepository(Project, tx)
18
- const buildingComplexRepo = getRepository(BuildingComplex, tx)
19
-
20
- const newBuildingComplex = await buildingComplexRepo.save({
21
- domain,
22
- creator: user,
23
- updater: user
24
- })
25
-
26
- const result = await projectRepo.save({
27
- name: project.name,
28
- buildingComplex: newBuildingComplex,
29
- domain,
30
- creator: user,
31
- updater: user
32
- })
33
-
34
- return result
35
- }
36
-
37
- @Directive('@transaction')
38
- @Mutation(returns => Project, { description: '프로젝트 업데이트' })
39
- async updateProject(@Arg('project') project: ProjectPatch, @Ctx() context: ResolverContext): Promise<Project> {
40
- const { user, tx } = context.state
41
- const projectRepo = getRepository(Project, tx)
42
- const buildingComplexRepo = getRepository(BuildingComplex, tx)
43
- const buildingRepo = getRepository(Building, tx)
44
- const buildingLevelRepo = getRepository(BuildingLevel, tx)
45
-
46
- const buildingComplex = project.buildingComplex
47
- const buildings = project.buildingComplex?.buildings || []
48
-
49
- // 1. 프로젝트 수정
50
- const projectState = project.totalProgress == 100 ? ProjectState.COMPLETED : ProjectState.ONGOING
51
- const projectResult = await projectRepo.save({ ...project, state: projectState, updater: user })
52
-
53
- // 2. 단지 정보 수정
54
- await buildingComplexRepo.save({ ...buildingComplex, updater: user })
55
-
56
- // 2-1. 프로젝트 메인 이미지 첨부파일 나머지 삭제 후 저장
57
- await createAttachmentAfterDelete(context, project?.mainPhotoUpload, project.id, Project.name)
58
-
59
- // 2-2. 단지 BIM 이미지 첨부파일 나머지 삭제 후 저장
60
- await createAttachmentAfterDelete(context, buildingComplex?.drawingUpload, buildingComplex.id, BuildingComplex.name + '_bim')
61
-
62
- // 3. 동의 층 정보가 바뀌었으면 층 초기화 후 다시 생성
63
- const originBuilding = await buildingRepo.findBy({ buildingComplex: { id: buildingComplex.id } }) // 이전 동 정보 가져오기
64
- const afterBuilding = buildings.reduce((acc, building) => ({ ...acc, [building.name]: building.floorCount }), {}) // 비교용으로 수정된 동 정보 데이터 파싱
65
- const isBuidlingChanged = originBuilding.some(building => afterBuilding[building.name] !== building.floorCount) // 층 개수가 달라진 동이 있는지 확인
66
-
67
- // 동의 층 개수가 달라지면 모든 층의 데이터 제거 후 생성
68
- if (isBuidlingChanged || originBuilding.length !== buildings.length) {
69
- // 3-1. 기존 동/층 첨부파일 및 데이터 제거
70
- const buildingIds = originBuilding.map((building: Building) => building.id)
71
- const buildingLevels = await buildingLevelRepo.findBy({ building: { id: In(buildingIds) } })
72
- const buildingLevelIds = buildingLevels.map((buildingLevel: BuildingLevel) => buildingLevel.id)
73
-
74
- await buildingLevelRepo.softDelete({ building: { id: In(buildingIds) } })
75
- await buildingRepo.softDelete({ id: In(buildingIds) })
76
- await deleteAttachmentsByRef(null, { refBys: [...buildingIds, ...buildingLevelIds] }, context)
77
-
78
- // 3-2. 단지 내 동 정보들 생성
79
- for (let buildingKey in buildings) {
80
- const building = buildings[buildingKey]
81
- const newBuilding = await buildingRepo.save({
82
- buildingComplex: buildingComplex,
83
- name: building.name,
84
- floorCount: building.floorCount,
85
- creator: user
86
- })
87
-
88
- // 3-3. 동별로 for문 돌면서 층 데이터 개수대로 생성
89
- for (let i = 1; i <= building.floorCount; i++) {
90
- await buildingLevelRepo.save({ building: newBuilding, floor: i, creator: user })
91
- }
92
- }
93
- }
94
-
95
- return projectResult
96
- }
97
-
98
- @Directive('@transaction')
99
- @Mutation(returns => Project, { description: '프로젝트 도면 업데이트' })
100
- async updateProjectPlan(@Arg('project') project: ProjectPatch, @Ctx() context: ResolverContext): Promise<Project> {
101
- const { user, tx, domain } = context.state
102
- const projectRepo = getRepository(Project, tx)
103
- const buildingComplexRepo = getRepository(BuildingComplex, tx)
104
- const buildingRepo = getRepository(Building, tx)
105
- const buildingLevelRepo = getRepository(BuildingLevel, tx)
106
- const buildingComplex = project.buildingComplex
107
- const buildings = project.buildingComplex?.buildings || []
108
-
109
- // 1. 프로젝트 수정 시간 업데이트
110
- const projectResult = await projectRepo.save({ ...project, updater: user })
111
-
112
- // 2. 단지 축척 정보 수정
113
- await buildingComplexRepo.save({ ...buildingComplex, updater: user })
114
-
115
- for (let buildingKey in buildings) {
116
- const building = buildings[buildingKey]
117
-
118
- for (let buildingLevelKey in building.buildingLevels) {
119
- const buildingLevel = building.buildingLevels[buildingLevelKey]
120
-
121
- // 3. 층별 도면 이미지 저장
122
- const mainDrawingAttatchment = await createAttachmentAfterDelete(
123
- context,
124
- buildingLevel.mainDrawingUpload,
125
- buildingLevel.id,
126
- BuildingLevel.name + '_mainDrawing'
127
- )
128
- // 첨부된 PDF가 있으면 PDF 파일대로 썸네일 생성
129
- if (mainDrawingAttatchment) {
130
- const mainDrawingUpload = await buildingLevel.mainDrawingUpload
131
- const pdfPath = `/${ATTACHMENT_PATH}/${mainDrawingAttatchment.path}` // TODO ATTACHMENT_PATH 제거, mainDrawingAttachment.fullpath 로 해도 될 것 같은데...
132
- const fileName = mainDrawingUpload.filename.replace('.pdf', '')
133
- const pngFile = await pdfToImage({ pdfPath, fileName })
134
- await createAttachmentAfterDelete(context, pngFile, buildingLevel.id, BuildingLevel.name + '_mainDrawing_image')
135
-
136
- const pngThumbnailFile = await pdfToImage({ pdfPath, fileName, defaultViewport: { width: 300, height: 200 } })
137
- await createAttachmentAfterDelete(
138
- context,
139
- pngThumbnailFile,
140
- buildingLevel.id,
141
- BuildingLevel.name + '_mainDrawing_thumbnail'
142
- )
143
- }
144
-
145
- // 3-1. 입면도 파일 저장
146
- const elevationDrawingAttatchment = await createAttachmentAfterDelete(
147
- context,
148
- buildingLevel.elevationDrawingUpload,
149
- buildingLevel.id,
150
- BuildingLevel.name + '_elevationDrawing'
151
- )
152
- if (elevationDrawingAttatchment) {
153
- const elevationDrawingUpload = await buildingLevel.elevationDrawingUpload
154
- const pdfPath = `/${ATTACHMENT_PATH}/${elevationDrawingAttatchment.path}`
155
- const fileName = elevationDrawingUpload.filename.replace('.pdf', '')
156
- const pngThumbnailFile = await pdfToImage({ pdfPath, fileName, defaultViewport: { width: 300, height: 200 } })
157
- await createAttachmentAfterDelete(
158
- context,
159
- pngThumbnailFile,
160
- buildingLevel.id,
161
- BuildingLevel.name + '_elevationDrawing_thumbnail'
162
- )
163
- }
164
-
165
- // 3-2. 철근배분도 파일 저장
166
- const rebarDistributionDrawingAttatchment = await createAttachmentAfterDelete(
167
- context,
168
- buildingLevel.rebarDistributionDrawingUpload,
169
- buildingLevel.id,
170
- BuildingLevel.name + '_rebarDistributionDrawing'
171
- )
172
- if (rebarDistributionDrawingAttatchment) {
173
- const rebarDistributionDrawingUpload = await buildingLevel.rebarDistributionDrawingUpload
174
- const pdfPath = `/${ATTACHMENT_PATH}/${rebarDistributionDrawingAttatchment.path}`
175
- const fileName = rebarDistributionDrawingUpload.filename.replace('.pdf', '')
176
- const pngThumbnailFile = await pdfToImage({ pdfPath, fileName, defaultViewport: { width: 300, height: 200 } })
177
- await createAttachmentAfterDelete(
178
- context,
179
- pngThumbnailFile,
180
- buildingLevel.id,
181
- BuildingLevel.name + '_rebarDistributionDrawing_thumbnail'
182
- )
183
- }
184
-
185
- // 3-3. 층 업데이트 시간 갱신
186
- await buildingLevelRepo.save({ ...buildingLevel, updater: user })
187
- }
188
-
189
- // 4. 동별 도면 이미지 저장
190
- await createAttachmentAfterDelete(context, building?.drawingUpload, building.id, Building.name)
191
-
192
- // 4-1. 동 업데이트 시간 갱신
193
- await buildingRepo.save({ ...building, updater: user })
194
- }
195
-
196
- return projectResult
197
- }
198
-
199
- @Directive('@transaction')
200
- @Mutation(returns => Boolean, { description: '프로젝트 공정표 업로드' })
201
- async uploadProjectScheduleTable(
202
- @Arg('param') param: UploadProjectScheduleTable,
203
- @Ctx() context: ResolverContext
204
- ): Promise<boolean> {
205
- const { domain, user, tx } = context.state
206
- const { projectId, scheduleTable } = param
207
-
208
- const projectRepo = getRepository(Project, tx)
209
- const project = await projectRepo.findOne({
210
- where: { domain: { id: domain.id }, id: projectId }
211
- })
212
-
213
- const { createReadStream, filename, mimetype } = await scheduleTable
214
-
215
- const stream = createReadStream()
216
-
217
- const chunks = []
218
- for await (const chunk of stream) {
219
- chunks.push(chunk)
220
- }
221
-
222
- const buffer = Buffer.concat(chunks)
223
-
224
- await parseExcelAndImportTasks(buffer, project, context)
225
- // await parseExcelAndImportTasks(attachment.fullpath, project, context)
226
-
227
- return true
228
- }
229
-
230
- @Directive('@transaction')
231
- @Mutation(returns => Boolean, { description: 'To delete Project' })
232
- async deleteProject(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {
233
- const { domain, tx } = context.state
234
-
235
- await getRepository(Project, tx).delete({ domain: { id: domain.id }, id })
236
- await deleteAttachmentsByRef(null, { refBys: [id] }, context)
237
-
238
- return true
239
- }
240
- }
241
-
242
- export async function createAttachmentAfterDelete(context: ResolverContext, file: any, refBy: any, refType: any) {
243
- if (file === undefined) {
244
- return null
245
- }
246
-
247
- const { tx } = context.state
248
-
249
- // 기존 첨부 파일이 있으면 삭제
250
- await deleteAttachmentsByRef(null, { refBys: [refBy], refType }, context)
251
-
252
- let result = await createAttachment(null, { attachment: { file, refType, refBy } }, context)
253
-
254
- return await getRepository(Attachment, tx).findOne({ where: { id: result.id } })
255
- }
@@ -1,105 +0,0 @@
1
- import { Resolver, Query, FieldResolver, Root, Arg, Args, Ctx } from 'type-graphql'
2
- import { IsNull } from 'typeorm'
3
- import { Domain, getRepository, ListParam, getQueryBuilderFromListParams } from '@things-factory/shell'
4
- import { User } from '@things-factory/auth-base'
5
- import { Project } from './project'
6
- import { Task } from '../task/task'
7
- import { ProjectList } from './project-type'
8
- import { Attachment } from '@things-factory/attachment-base'
9
- import { BuildingComplex } from '@dssp/building-complex'
10
-
11
- @Resolver(Project)
12
- export class ProjectQuery {
13
- @Query(returns => Project!, { nullable: true, description: 'To fetch a Project' })
14
- async project(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Project> {
15
- const { domain } = context.state
16
-
17
- return await getRepository(Project).findOne({
18
- where: { domain: { id: domain.id }, id }
19
- })
20
- }
21
-
22
- @Query(returns => ProjectList, { description: '프로젝트 리스트' })
23
- async projects(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<ProjectList> {
24
- const { domain } = context.state
25
-
26
- const queryBuilder = getQueryBuilderFromListParams({
27
- domain,
28
- params,
29
- repository: await getRepository(Project),
30
- searchables: ['name', 'description', 'state']
31
- })
32
-
33
- const [items, total] = await queryBuilder.getManyAndCount()
34
-
35
- return { items, total }
36
- }
37
-
38
- @Query(returns => Project!, { nullable: true, description: 'To fetch a Project' })
39
- async projectByBuildingComplexId(
40
- @Arg('buildingComplexId') buildingComplexId: string,
41
- @Ctx() context: ResolverContext
42
- ): Promise<Project> {
43
- const { domain } = context.state
44
-
45
- return await getRepository(Project).findOne({
46
- where: { domain: { id: domain.id }, buildingComplex: { id: buildingComplexId } }
47
- })
48
- }
49
-
50
- @FieldResolver(type => [Task], { nullable: true })
51
- async rootTasks(@Root() project: Project): Promise<Task[]> {
52
- return await getRepository(Task).find({
53
- where: {
54
- project: { id: project.id },
55
- parent: IsNull()
56
- }
57
- })
58
- }
59
-
60
- @FieldResolver(type => Attachment)
61
- async mainPhoto(@Root() project: Project): Promise<string | Attachment> {
62
- const attachment: Attachment = await getRepository(Attachment).findOne({
63
- where: {
64
- domain: { id: project.domainId },
65
- refBy: project.id
66
- },
67
- order: { createdAt: 'ASC' }
68
- })
69
-
70
- return attachment
71
- }
72
-
73
- @FieldResolver(type => Attachment)
74
- async scheduleTable(@Root() project: Project): Promise<Attachment | undefined> {
75
- const attachment: Attachment = await getRepository(Attachment).findOne({
76
- where: {
77
- domain: { id: project.domainId },
78
- refBy: project.id,
79
- refType: Project.name + '_schedule_table'
80
- }
81
- })
82
-
83
- return attachment
84
- }
85
-
86
- @FieldResolver(type => BuildingComplex)
87
- async buildingComplex(@Root() project: Project): Promise<BuildingComplex> {
88
- return await getRepository(BuildingComplex).findOneBy({ id: project.buildingComplexId })
89
- }
90
-
91
- @FieldResolver(type => Domain)
92
- async domain(@Root() project: Project): Promise<Domain> {
93
- return await getRepository(Domain).findOneBy({ id: project.domainId })
94
- }
95
-
96
- @FieldResolver(type => User)
97
- async updater(@Root() project: Project): Promise<User> {
98
- return await getRepository(User).findOneBy({ id: project.updaterId })
99
- }
100
-
101
- @FieldResolver(type => User)
102
- async creator(@Root() project: Project): Promise<User> {
103
- return await getRepository(User).findOneBy({ id: project.creatorId })
104
- }
105
- }
@@ -1,72 +0,0 @@
1
- import { ObjectType, Field, InputType, Int, Float } from 'type-graphql'
2
- import { Project } from './project'
3
- import type { FileUpload } from 'graphql-upload/GraphQLUpload.js'
4
- import GraphQLUpload from 'graphql-upload/GraphQLUpload.js'
5
- import { ObjectRef, ScalarObject } from '@things-factory/shell'
6
- import { BuildingComplexPatch } from '@dssp/building-complex'
7
-
8
- @InputType()
9
- export class NewProject {
10
- @Field({ nullable: false, description: '프로젝트 이름' })
11
- name: string
12
-
13
- @Field(type => ObjectRef, { nullable: true, description: '연관된 건물 복합체 정보 (선택 사항)' })
14
- buildingComplex?: ObjectRef
15
- }
16
-
17
- @InputType()
18
- export class ProjectPatch {
19
- @Field({ nullable: false, description: '수정할 프로젝트의 ID' })
20
- id: string
21
-
22
- @Field({ nullable: false, description: '프로젝트 이름' })
23
- name: string
24
-
25
- @Field({ nullable: true, description: '프로젝트 착공일정' })
26
- startDate?: string
27
-
28
- @Field({ nullable: true, description: '프로젝트 준공일정' })
29
- endDate?: string
30
-
31
- @Field(type => GraphQLUpload, { nullable: true, description: '프로젝트 대표 사진 업로드' })
32
- mainPhotoUpload?: FileUpload
33
-
34
- @Field(type => Float, { nullable: true, description: '프로젝트 전체 진행현황 (%)' })
35
- totalProgress?: number
36
-
37
- @Field(type => Float, { nullable: true, description: '프로젝트 주간 진행현황 (%)' })
38
- weeklyProgress?: number
39
-
40
- @Field(type => Float, { nullable: true, description: '프로젝트 KPI' })
41
- kpi?: number
42
-
43
- @Field(type => Float, { nullable: true, description: '검측/통과 비율 (%)' })
44
- inspPassRate?: number
45
-
46
- @Field(type => Float, { nullable: true, description: '로봇 작업 진행율 (%)' })
47
- robotProgressRate?: number
48
-
49
- @Field(type => Float, { nullable: true, description: '구조 안전도 (%)' })
50
- structuralSafetyRate?: number
51
-
52
- @Field({ nullable: true })
53
- buildingComplex?: BuildingComplexPatch
54
- }
55
-
56
- @InputType()
57
- export class UploadProjectScheduleTable {
58
- @Field({ nullable: false, description: '수정할 프로젝트의 ID' })
59
- projectId: string
60
-
61
- @Field(type => GraphQLUpload, { nullable: true, description: '프로젝트 공정표 업로드' })
62
- scheduleTable?: FileUpload
63
- }
64
-
65
- @ObjectType()
66
- export class ProjectList {
67
- @Field(type => [Project], { description: '프로젝트 리스트 항목들' })
68
- items: Project[]
69
-
70
- @Field(type => Int, { description: '전체 프로젝트 수' })
71
- total: number
72
- }
@@ -1,134 +0,0 @@
1
- import {
2
- CreateDateColumn,
3
- UpdateDateColumn,
4
- DeleteDateColumn,
5
- Entity,
6
- Index,
7
- Column,
8
- RelationId,
9
- ManyToOne,
10
- OneToOne,
11
- OneToMany,
12
- JoinColumn,
13
- PrimaryGeneratedColumn
14
- } from 'typeorm'
15
- import { ObjectType, Field, ID } from 'type-graphql'
16
-
17
- import { Domain, roundTransformer } from '@things-factory/shell'
18
- import { User } from '@things-factory/auth-base'
19
- import { Task } from '../task/task'
20
- import { BuildingComplex } from '@dssp/building-complex'
21
- import { Attachment } from '@things-factory/attachment-base'
22
-
23
- export enum ProjectState {
24
- 'ONGOING' = '10',
25
- 'COMPLETED' = '20'
26
- }
27
-
28
- @ObjectType({ description: '프로젝트' })
29
- @Entity()
30
- @Index('ix_project_building', (project: Project) => [project.buildingComplex], { unique: true, where: '"deleted_at" IS NULL' })
31
- export class Project {
32
- @PrimaryGeneratedColumn('uuid')
33
- @Field(type => ID)
34
- readonly id: string
35
-
36
- @ManyToOne(type => Domain)
37
- @Field({ nullable: true })
38
- domain?: Domain
39
-
40
- @RelationId((project: Project) => project.domain)
41
- domainId?: string
42
-
43
- @Column({ nullable: false, comment: '프로젝트 이름' })
44
- @Field({ nullable: false })
45
- name?: string
46
-
47
- @Column({ nullable: false, default: ProjectState.ONGOING, comment: '프로젝트 상태 (10: 진행중, 20: 완료)' })
48
- @Field({ nullable: false })
49
- state?: ProjectState
50
-
51
- @Column({ type: 'date', nullable: true, comment: '착공일정' })
52
- @Field({ nullable: true })
53
- startDate?: string
54
-
55
- @Column({ type: 'date', nullable: true, comment: '준공일정' })
56
- @Field({ nullable: true })
57
- endDate?: string
58
-
59
- // 대표 사진
60
- @Field(type => Attachment, { nullable: true })
61
- mainPhoto?: Attachment
62
-
63
- @Column({ type: 'float', nullable: true, default: 0, transformer: roundTransformer, comment: '전체 진행현황' })
64
- @Field({ nullable: true })
65
- totalProgress?: number
66
-
67
- @Column({ type: 'float', nullable: true, default: 0, transformer: roundTransformer, comment: '주간 진행현황' })
68
- @Field({ nullable: true })
69
- weeklyProgress?: number
70
-
71
- @Column({ type: 'float', nullable: true, default: 0, transformer: roundTransformer, comment: 'KPI' })
72
- @Field({ nullable: true })
73
- kpi?: number
74
-
75
- @Column({ type: 'float', nullable: true, default: 0, transformer: roundTransformer, comment: '검측/통과 비율' })
76
- @Field({ nullable: true })
77
- inspPassRate?: number
78
-
79
- @Column({ type: 'float', nullable: true, default: 0, transformer: roundTransformer, comment: '로봇 작업 진행율' })
80
- @Field({ nullable: true })
81
- robotProgressRate?: number
82
-
83
- @Column({ type: 'float', nullable: true, default: 0, transformer: roundTransformer, comment: '구조 안전도' })
84
- @Field({ nullable: true })
85
- structuralSafetyRate?: number
86
-
87
- // 단지 정보 (1:1 테이블 참조)
88
- @OneToOne(type => BuildingComplex)
89
- @JoinColumn()
90
- @Field({ nullable: true })
91
- buildingComplex?: BuildingComplex
92
-
93
- @RelationId((project: Project) => project.buildingComplex)
94
- buildingComplexId?: string
95
-
96
- // 작업 정보 (하위 테이블 참조)
97
- @OneToMany(() => Task, task => task.project)
98
- @Field(() => [Task], { nullable: true })
99
- tasks?: Task[]
100
-
101
- // 루트 작업 정보 (부모가 없는 상위 작업)
102
- @Field(() => [Task], { nullable: true })
103
- rootTasks?: Task[]
104
-
105
- @CreateDateColumn()
106
- @Field({ nullable: true })
107
- createdAt?: Date
108
-
109
- @UpdateDateColumn()
110
- @Field({ nullable: true })
111
- updatedAt?: Date
112
-
113
- @DeleteDateColumn()
114
- @Field({ nullable: true })
115
- deletedAt?: Date
116
-
117
- @ManyToOne(type => User, { nullable: true })
118
- @Field(type => User, { nullable: true })
119
- creator?: User
120
-
121
- @RelationId((project: Project) => project.creator)
122
- creatorId?: string
123
-
124
- @ManyToOne(type => User, { nullable: true })
125
- @Field(type => User, { nullable: true })
126
- updater?: User
127
-
128
- @RelationId((project: Project) => project.updater)
129
- updaterId?: string
130
-
131
- // 공정표 파일
132
- @Field(type => Attachment, { nullable: true })
133
- scheduleTable?: Attachment
134
- }
@@ -1,7 +0,0 @@
1
- import { Resource } from './resource'
2
- import { ResourceQuery } from './resource-query'
3
- import { ResourceMutation } from './resource-mutation'
4
-
5
- export const entities = [Resource]
6
- export const resolvers = [ResourceQuery, ResourceMutation]
7
- export const subscribers = []